matlab拟合非线性函数

问题描述:

matlab拟合非线性函数
已知x,y.比如y=[y0 y1 y2 y3 y4 y5 y6 ] x=[x0 x1 x2 x3 x4 x5 x6],想求函数y=a0+a1cosx+a2cos2x+a3cos3x……ancosnx该怎么编写程序?
忘说了,需要求出的是a0 a1 a2……an
1个回答 分类:综合 2014-11-16

问题解答:

我来补答
线性模型、非线性模型是以待优化参数W为参考(而不是看X).

y = w' * x ('表示转置)描述的是线性模型.题目中要拟合的函数是:y = w0 + w1 cos a + ... + wn cosna,它同样符合y = w' * x,其中x = (1 cosa ... cosna)’.设x构成的集合是X,y构成的集合是Y,可依据最小二乘法求出W = (XX')^-1 *X*Y.

所以程序是:
n = 3;                                    \x09        % 拟合到cos 3x
x = linspace(0,2*pi,100);        \x09    % 数据集
y = 1+2*cos(x)-3*cos(3*x) + rand(1,length(x)); % 加噪声
X = cos((0:n)'*x);
Y = y';
W = (X*X')^-1*X*Y;                         %
plot(x,y,'o',x,W'*cos((0:n)'*x));   % 画图查看

PS:MATLAB问题提问请设置问题分类为编程.
 
 
展开全文阅读
剩余:2000