上线没有破碎海滩任务:怎样用matlab进行曲线拟合?

来源:百度文库 编辑:高校问答 时间:2024/05/04 13:05:29
怎样用matlab对一个图像的轮廓进行b样条曲线拟合,求详细方法。
我的邮箱是hongtian1983@163.com
轮廓上的数据点怎样提取?提取出怎么拟合?
希望得到较详细的帮助。

可以先以行向量的形式输入所得的x,y,即x=[ ];y=[ ];再用polyfit(x,y,n)命令便可将所测x,y拟和为函数,n为函数的阶数。得出结果的是按从x的n次方降幂排列的系数,由此便可得出y与x的关系函数。
以函数y=(x+1)的平方为例 (未知)。假设测得5组数据,x=[-2,-1,0,1,2];y=[1,0,1,4,9];
polyfit(x,y,2);便可得到 ans=1.000 2.000 1.000
由此可知y=1*x平方 + 2*x + 1 ,
再根据这个函数关系,定义y=x平方+2*x+1;x=(-2:0.1:2);plot(x,y);便可得到所测数据拟和为函数后的图象。

该回答在2006-03-16 10:42:08由回答者修改过

给你个例子吧,分别用spap2和spaps两种B样条以及csaps三次样条曲线拟和余弦曲线。
% xSplineFit.m
% 功能: 三种样条函数拟合方法:csaps()、spap2()和spaps()
%
% Author: HUANG Huajiang
% Copyright 2003 UNILAB Research Center,
% East China University of Science and Technology, Shanghai, PRC
% $Revision: 1.0 $ $Date: 2003/05/02 $

% 生成离散数据(x,y),其中,x为四个周期,y为加入随机误差的余弦波
x = linspace(0,4*pi,41);
y = cos(x) + (rand(1,41)-.5)*.2;
pp = csaps(x,y,0.98); % By csaps()
knots = 9;
K = 4;
sp1 = spap2(knots,K,x,y); % By spap2()
sp2 = spaps(x,y, 0.016 ); % By spaps()

% 分别绘制三种方法的拟合曲线
plot(x,y,'ok');hold on;fnplt(pp,'r');hold off % By csaps()
figure
plot(x,y,'ok');hold on;fnplt(sp1,'b');hold off % By spap2()
figure
plot(x,y,'ok');hold on;fnplt(sp2,'r');hold off % By spaps()

% 在同一坐标上绘制三条曲线以便比较
figure
plot(x,y,'ok'); hold on, fnplt(pp,'k'),fnplt(sp1,'b'), fnplt(sp2,'r')
xlabel('x')
ylabel('y')
hold off

这个问题我今天刚刚解决,我是做一首数学模型题 在《计算方法》上有最优一致逼近法,需要解一个线性方程组叫做正规方程组,在MATLAB中你需要编程解决。对于其它多项式最小二乘问题,可参考命令 polyfit。对于其他情形,可参考命令lsqnonneg,lsqlin,lsqnonlin或lsqcurvefit。

可以先以行向量的形式输入所得的x,y,即x=[ ];y=[ ];再用polyfit(x,y,n)命令便可将所测x,y拟和为函数,n为函数的阶数。得出结果的是按从x的n次方降幂排列的系数,由此便可得出y与x的关系函数。
以函数y=(x+1)的平方为例 (未知)。假设测得5组数据,x=[-2,-1,0,1,2];y=[1,0,1,4,9];
polyfit(x,y,2);便可得到 ans=1.000 2.000 1.000
由此可知y=1*x平方 + 2*x + 1 ,
再根据这个函数关系,定义y=x平方+2*x+1;x=(-2:0.1:2);plot(x,y);便可得到所测数据拟和为函数后的图象。