MATLAB中的拟合只能用在两个未知数参量上吗?
答案:3 悬赏:80
解决时间 2021-02-19 14:19
- 提问者网友:萌萌小主
- 2021-02-18 14:06
比如说对XYZ这样三个参量的就不能拟合?
最佳答案
- 二级知识专家网友:桃花别处起长歌
- 2021-02-18 14:27
MATLAB可以进行曲面拟合。下面给你一个参考程序:
x = rand(100,1)*16 - 8;
y = rand(100,1)*16 - 8;
r = sqrt(x.^2 + y.^2) + eps;
z = sin(r)./r;
xlin = linspace(min(x),max(x),33);
ylin = linspace(min(y),max(y),33);
[X,Y] = meshgrid(xlin,ylin);
Z = griddata(x,y,z,X,Y,'cubic');
mesh(X,Y,Z) %interpolated
axis tight; hold on
plot3(x,y,z,'.','MarkerSize',15) %nonuniform
x = rand(100,1)*16 - 8;
y = rand(100,1)*16 - 8;
r = sqrt(x.^2 + y.^2) + eps;
z = sin(r)./r;
xlin = linspace(min(x),max(x),33);
ylin = linspace(min(y),max(y),33);
[X,Y] = meshgrid(xlin,ylin);
Z = griddata(x,y,z,X,Y,'cubic');
mesh(X,Y,Z) %interpolated
axis tight; hold on
plot3(x,y,z,'.','MarkerSize',15) %nonuniform
全部回答
- 1楼网友:浪女动了心
- 2021-02-18 16:36
可以拟合,这是我做过的一个拟合代码:
t=1:60;
y=[22.8 46.4 39.1 43.1 52.7 42.3 39.5 46 37.9 31.6 27.7 22.4 26.1 30.3 20.6 17 14.5 12.5 14.9 14.8 13.9 12.2 10.8 10.2 9.2 9.4 10.2 10.8 11.3 12.3 12.6 16.8 18.5 15 13.7 12.7 14.5 15.3 13.2 12.5 10.2 7.8 7.3 6.5 5.9 5.5 5.2 4.9 4.7 5 5.3 4.34 4.66 4.28 6 6.08 5.95 7.34 6.98 6.62];
fun=inline('p(1)*t+p(2).*exp(-0.085*t).*sin(pi/18*(t-52)-pi/2)+p(3)','p','t');
%fun=inline('-0.0226*t+234.1398.*exp(-0.085*t).*sin(0.1745*t-4.19)+8.7367','p','t');
p0=zeros(1,3);
minr=1e6;
minbeta=zeros(1,3);
bestn=0;
[beta,r,J]=nlinfit(t(38:60),y(38:60),fun,p0);
if sum(r)<minr
minr=sum(r);
minbeta=beta;
bestn=38;
end
plot(bestn:100,fun(minbeta,bestn:100));
hold on
plot(bestn:60,y(bestn:60));
上面的nlinfit函数就是拟合函数,有不懂可以追问。因为这个代码是我做一个题目的时候用的没有修改什么,可能有些部分你不需要。
- 2楼网友:摧毁过往
- 2021-02-18 15:27
实际的科学中,常需要很多变量和参数的拟合。matlab作为超强大的科学计算软件,当然能解决这些问题啦!可以拟合。
建议你系统学习matlab。唔啦啦~
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯