2024-09-01
Matlab
00

MATLAB 对实验数据的离散点进行n次的曲线拟合

clc,clear % ----------------------------------------------------------------------------------------------- % Written by QQ742971636 % ----------------------------------------------------------------------------------------------- % 习题 对实验数据进行3次和4次拟合,画出图 % 然后根据曲线自己求几个拟合,画出图 % 画出原始数据折线图 % ------------------------------------------------------------------------------------------------ % -------------------------------------------------------------------------------------------- % 实验数据 x y 初始赋值,画出原始数据折线图 % -------------------------------------------------------------------------------------------- x=[0.0 0.1 0.2 0.3 0.5 0.8 1.0]; y=[1.0 0.41 0.5 0.61 0.91 2.02 2.46]; plot(x,y,'b'); %画出原始数据折线图 hold on % -------------------------------------------------------------------------------------------- % 自编拟合函数,传入x,y和n,画出n次拟合曲线 % -------------------------------------------------------------------------------------------- for cishu=2:5 c=colormap(lines(5)); xishu=quxiannihe(x,y,cishu); % 传入x,y和n,得到多项式系数 xx=linspace(0,1,500); %画出n次拟合曲线 yy=polyval(xishu,xx); %画出n次拟合曲线 plot(xx,yy,'color',c(cishu,:)); %画出n次拟合曲线 hold on end legend("n=2","n=3","n=4","n=5"); title("n次拟合曲线图")%标题 % -------------------------------------------------------------------------------------------- % 曲线拟合函数quxiannihe() % 传入参数:x,y为二维坐标实验数据 % n 为进行n次拟合 % 传出参数:a 最后拟合结果多项式系数,降幂排列,形状(1,n+1) % -------------------------------------------------------------------------------------------- function [a]=quxiannihe(x,y,n) m=length(x)-1; %实验数据多少,从0到(个数+1) A=zeros(n+1,n+1); %初始化法方程A*a=b中的参数A for row=1:n+1 %计算每一行元素row for i=1:n+1 %计算每一列i Sum=0; %计算某一行某一列值 for count=1:m+1 Sum=Sum+x(count)^(row-1)*x(count)^(i-1); %计算内积累加值 end A(row,i)=Sum; %赋值到A对应元素 end end b=zeros(n+1,1); %初始化法方程中A*a=b的参数b for i=1:n+1 %计算每一个元素 Sum=0; for count=1:m+1 Sum=Sum+x(count)^(i-1)*y(count); %计算内积累加值 end b(i,1)=Sum; %赋值到b对应元素 end a=A\b; %求法方程A*a=b中的参数a a=fliplr(reshape(a,1,n+1)); %整理a的形状,降幂排序 fprintf("%d次拟合的结果多项式系数:",n); disp(a); %打印 end

最终得到的拟合图像:

在这里插入图片描述

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!