温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

matlab怎么拟合曲线

发布时间:2026-11-03 01:24:18 来源:亿速云 阅读:92 作者:小樊 栏目:软件技术

在 MATLAB 中“拟合曲线”通常有几类做法,从最简单的内置函数到自定义模型拟合。下面按常见场景给你一个清晰总结。


一、最常用:多项式拟合 polyfit

适合:已知大概是直线、二次、三次曲线

x = 1:10;
y = [2.1 3.9 6.2 8.1 10.5 12.8 15.1 17.0 19.2 21.0];

p = polyfit(x, y, 2);   % 2次多项式
y_fit = polyval(p, x);

plot(x, y, 'o', x, y_fit, '-')
  • p:系数(从高次到低次)
  • polyval:计算拟合值

二、图形界面拟合(最省事)

适合:不想写代码、快速看结果

x = 1:10;
y = rand(1,10);
plot(x, y, 'o')

然后:

  • 点击 Tools → Basic Fitting
  • 选多项式阶数、显示方程、R²

三、非线性曲线拟合 fit + Curve Fitting Toolbox

适合:指数、幂律、高斯等

x = 1:0.5:10;
y = 3*exp(-0.4*x) + randn(size(x))*0.2;

f = fit(x', y', 'exp1');   % exp1: a*exp(b*x)
plot(f, x, y)

常见模型:

  • 'poly2' 二次
  • 'exp1' 单指数
  • 'power1' 幂律
  • 'gauss1' 高斯

四、自定义模型拟合

适合:公式很特殊

x = linspace(0,10,50)';
y = 2*x.^0.5 + randn(size(x))*0.3;

ft = fittype('a*sqrt(x)+b');
f = fit(x, y, ft, 'StartPoint', [1 1]);
plot(f, x, y)

五、最小二乘通用方法 lsqcurvefit

适合:复杂模型、无 Curve Fitting Toolbox

x = 1:10;
y = 2*exp(-0.3*x) + 0.5;

model = @(p,x) p(1)*exp(p(2)*x) + p(3);
p0 = [1 0 0];
p = lsqcurvefit(model, p0, x, y);

plot(x, y, 'o', x, model(p,x), '-')

六、拟合效果评估

residual = y - y_fit;
R2 = 1 - sum(residual.^2)/sum((y-mean(y)).^2);

七、怎么选方法?

情况 推荐
直线/多项式 polyfit
快速看图 Basic Fitting
指数/高斯 fit
自定义公式 fittype / lsqcurvefit

如果你愿意,可以把你的数据或公式发我,我可以直接帮你写拟合代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手