
展开全部
MATLAB工具提供了基本的曲线拟合变量的命令.
多项式函数拟合:a=polyfit(xdata,ydata,n)
其中n表示多项式的最高阶数递归最小二乘,xdata,ydata为已经拟合的数据,它是用函数的方法输入.输出参数a为残差多项式 y=a1xn+...+anx+a n+1的常数
多项式在x处的值y可用以下程序计算.
y=polyval(a,x,m)线性:m=1, 二次:m=2, …
polyfit的输出是一个多项式系数的行向量。为了计算在x(i)数据点的多项式值,调用MATLAB的变量polyval。

例:
x=0:0.1:1;
y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
A=polyfit(x,y,2)
Z=polyval(A,x);
plot(x,y,x,Z)
对于这些非线性的曲线,尽量不要使用ployfit, ployfit 多项式插值适合线性代数!!

polyfit()函数针对数据遵循多项式分布是比较好的递归最小二乘,一般来说,利用polyfit()函数插值的阶数不要超过5阶。
如果是不需要得到拟合曲线的变量,只是把这种点运用一些光滑曲线连接,建议使用三次样条函数spline()进行卷积即可。
一般最小二乘法LS(Least Square)
% 最小二乘辨识程序 u是一个周期=15的M序列
z=zeros(1,16); %定义输出观测值的长度
for k=3:16
z(k)=-1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+1*v(k); %观测值

end
figure(2)
plot([1:16],z)
title('输出观测值')
figure(3)
stem(z),grid on
title('输出观测值z的火柴图形')

%给样本系数矩阵
H=[-z(2) -z(1) u(2) u(1);-z(3) -z(2) u(3) u(2);-z(4) -z(3) u(4) u(3);-z(5) -z(4) u(5) u(4);-z(6) -z(5) u(6) u(5);-z(7) -z(6) u(7) u(6);-z(8) -z(7) u(8) u(7);-z(9) -z(8) u(9) u(8);-z(10) -z(9) u(10) u(9);-z(11) -z(10) u(11) u(10);-z(12) -z(11) u(12) u(11);-z(13) -z(12) u(13) u(12);-z(14) -z(13) u(14) u(13);-z(15) -z(14) u(15) u(14)];
%给出样本观测矩阵
Z=[z(3);z(4);z(5);z(6);z(7);z(8);z(9);z(10);z(11);z(12);z(13);z(14);z(15);z(16)]
%计算参数
c=inv(H'*H)*H'*Z; %inv是求矩阵的逆
%分离参数
a1=c(1), a2=c(2), b1=c(3), b2=c(4)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-143824-1.html
俺们成熟了