matalab根据点的坐标拟合曲线

来源:百度知道 编辑:UC知道 时间:2024/05/18 10:52:08
知道20个点的坐标(x1,z1),(x2,z2),......(x20,z20)我要根据这20个点拟合一个曲线,请问应该怎么做,谢谢了!会matalab的人应该很轻松,我不会,希望大家给点思路。多谢了!

很多人都是这样的问题。
一般步骤:
你先把这20个点保存到数组里,然后先做出点图。

x=1:20;
y=x+1+2*rand(size(x)); %这里是线性函数再加上一些随机的噪音
plot(x,y,'*')

然后从图中,我们得有一个拟合的模型。这个模型通常是:
线性模型,多项式,正余弦,指对数等。。
记得:一定得先有模型,才能拟合。
像上面这样,我们用线性模型。线性模型的一般表达式是:y=ax+b
这里我们只有a,b不知道。只要我们用最小二乘法拟合出合适的a,b即可。
将x,y已知的20个点代入y=ax+b会得到二元一次方程组(20个方程),这里一般写成矩阵形式,方程数大于变量数,可求得:

A=[x(:),ones(size(x(:)))];%这个是上面二元一次方程组对应的矩阵,注意x(:)是将x转成列向量
ab=A\y(:);
a=ab(1)
b=ab(2)
%求出拟合值,并作图
yfit=a*x(:)+b;
hold on
plot(x,yfit,'r');

当然上面仅仅只是一个例子,当你的模型表达式是非线性时,最好用最小二乘法来做。
可以搜搜我以前的贴子,看看
应当会有所收获。