如何用matlab进行多元曲线拟合

如何用matlab进行多元曲线拟合,第1张

可以做到!!关于参数问题 help之

我一般喜欢使用nlinfit

非线性拟合,我用过很多次发现要用好她

的关键在于你要找到一个很好的初值

举个例子:

椭圆的方程可以是

ax^2+by^2+cxy+dx+ey+f=0;

发现其实双曲线,抛物线和他的一样

所以你在选取初值的时候最起码初值带入后

是个椭圆,

不然你拟合出来不仅仅是效果差,可能就变质

你说的情况其实是解方程了(四个未知数四个方程)

对于更多的数据:

先编写函数

function f=ffun(a,x)

f=a(1)x(:,1)+a(2)x(:,1)^2+a(3)x(:,2)+a(4)x(:,2)^2;

其余运行

x=[p,c];%p,c为列响量,f也为列向量

a0=[1,1,1,1];%初值取好点效果更好

a=nlinfit(x,f,'ffun',a0)

定点(2,3)半径203,又边要超出边界003,画面调整成为高度(3-203),宽2,最右下角的点就是圆的一边顶点,再画面调整为高3,宽2,这个点是圆心,然后调整画面为高3宽(2+203),这个时候最右下角的点是圆的右面顶点,现在圆心定啦,上顶点和右顶点也定啦,知道这3个点就能画出你想要的圆

function my_fit()

% 二维非线性拟合

% 直接将该代码复制到 m文件运行就可以了

% 请仔细看注释,注释写的很清楚

% step0:生成用于拟合的数据

%(以椭球为例,仅为测试,如果有现成数据,请替换此步中 x,y,z 值)

a = 3; %% 方程:x^2/a^2 + y^2/b^2 + z^2/c^2 = 1

b = 4; %% 从而,z = csqrt(1 - x^2/a^2 - y^2/b^2)

c = 5; %% 用上半球数据作为待拟合数据

x = -a:01:a; %% x,y取值范围

y = -b:01:b;

[X, Y] = meshgrid(x,y); %% 生成一个二维的取值范围

[M, N] = size(X);

x = reshape(X, MN, 1); %% 把矩阵转化为向量

y = reshape(Y, MN, 1);

p = ((1 - x^2/a^2 - y^2/b^2) >= 0); %% 将大于等于0的数值取出(只有这部分才有意义)

x = x(p); %% 生成的值均在上椭球面,如果有现成数据,请将 step0去掉

y = y(p); %% 并直接给 x,y,z赋值

z = csqrt(1 - x^2/a^2 - y^2/b^2);

% step1:开始拟合,k表示拟合系数,行向量

% 待拟合方程:F = z^2 = c^2 - c^2x^2/a^2 - c^2y^2/b^2

% x,y,z 均要先转化为列向量!!!

% 先把 z 值平方,再进行拟合,很重要!!!

% 令 c^2 = k(1),c^2/a^2 = k(2), c^2y^2/b^2 = k(3)

% 求出 k 即得到椭球方程

xdata = [x,y]; %% 将 x,y 数据按列组合到 xdata

ydata = z^2; %% 先把 z 值平方,再进行拟合

k0 = [1 1 1]; %% k 的运行初值,不会影响最终结果

F = @(k,xdata)k(1) - k(2)xdata(:,1)^2 -k(3)xdata(:,2)^2; %% 这句话是拟合函数

[k,resnorm]=lsqcurvefit(F,k0,xdata,ydata); %% 这句话是拟合关键!!!

% step2:椭圆参数求解

% 根据c^2 = k(1),c^2/a^2 = k(2), c^2y^2/b^2 = k(3)

c = sqrt(k(1));

a = c/sqrt(k(2));

b = c/sqrt(k(3));

disp('a轴:');

disp(a);

disp('b轴:');

disp(b);

disp('c轴:');

disp(c);

end

用plot()函数,就可以将拟合多条曲线绘制在一个坐标系中。

实施过程为

plot(x1,y1,x2,y2,x3,y3,)

其中:x1,y1为拟合曲线1某个区间的若干个(x1(i),y1(i))点的行(列)向量

x2,y2为拟合曲线2某个区间的若干个(x2(i),y2(i))点的行(列)向量

x3,y3为拟合曲线3某个区间的若干个(x3(i),y3(i))点的行(列)向量

以上就是关于如何用matlab进行多元曲线拟合全部的内容,包括:如何用matlab进行多元曲线拟合、matlab 离散点拟合,拟合成圆,并能确定圆心坐标和半径对应的长度、用matlab咋三维坐标系内拟合椭球公式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10137578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存