搜档网
当前位置:搜档网 › 线性拟合matlab程序

线性拟合matlab程序

%注:本程序每次运行完成后均需进行clear操作,否则会报错。

%程序使用方法:讲如下代码直接复制到m文件中保存后直接在命令窗口中run即可

disp('请输入要进行拟合的序列X');
X=input('X=');
x=X';
disp('请输入你要拟合的最高次数k');
k=input('k=');

%进行拟合并求出相关值
t=[1:length(X)]';
p=polyfit(t,x,k);
x2=polyval(p,t);
res=x-x2;

%显示图表,第一个为拟合曲线,第二个为误差阵列
disp('是否要立刻显示图表?是请输入1,否请输入0');
flag=input('');
if flag==1
figure,plot(t,x2,'b-',t,x,'g+');
figure,plot(t,res,'g+');
end

%计算最大误差百分比a和平均误差百分比b
a=max(abs(res./x));
b=sum(abs(res))/sum(x);
disp('此次拟合的最大误差比为a=');disp(a);
disp('此次拟合的平均误差比为b=');disp(b);
if a<0.55&&b<0.30
disp('此次拟合的结果可以采纳!')
else disp('此次拟合的误差过大,请尝试其他方法!')
end

%选择是否进行预测
disp('是否立即进行预测?是请输入1,否请输入0');
flag1=input('');
if flag1==1
disp('请输入你要预测的元素个数m');m=input('m=');
for i=length(X)+1:length(X)+m
sum=0;
for j=1:(k+1)
sum=sum+p(j)*i^(k+1-j);
end
ansj(i-length(X))=sum;
end
disp('预测结果为ansj=');disp(ansj);
end

相关主题