matlab自定义函数曲线拟合代码
时间: 2025-05-28 08:47:04 浏览: 12
以下是基于 MATLAB 编写的一个完整的自定义函数进行曲线拟合的代码示例:
### 自定义函数曲线拟合代码
假设我们有一组实验数据 `(xdata, ydata)`,并希望用一个特定形式的自定义函数 `y = a * exp(-b*x) + c` 进行拟合。
#### 数据准备与初始化
```matlab
% 实验数据 (xdata 和 ydata)
xdata = [0.9 1.5 13.8 19.8 24.1 28.2 35.2 60.3 74.6 81.3];
ydata = [455.2 428.6 124.1 67.3 43.2 28.1 13.1 -0.4 -1.3 -1.5];
% 初始猜测值
initialGuess = [100; -1; 5]; % 对应于参数 a, b, c 的初始估计值
```
#### 定义目标函数
通过匿名函数的方式定义待拟合的目标函数:
```matlab
% 自定义函数:y = a*exp(-b*x) + c
customFunction = @(params, x) params(1)*exp(-params(2).*x) + params(3);
```
#### 使用 lsqcurvefit 或 fitnlm 进行拟合
这里使用 `lsqcurvefit` 函数来执行非线性最小二乘法拟合:
```matlab
% 调用优化工具箱中的 lsqcurvefit 函数
options = optimset('Display', 'off'); % 设置显示选项为关闭
fittedParams = lsqcurvefit(customFunction, initialGuess, xdata, ydata, [], [], options);
% 输出拟合得到的参数
disp('拟合后的参数:');
disp(['a = ', num2str(fittedParams(1))]);
disp(['b = ', num2str(fittedParams(2))]);
disp(['c = ', num2str(fittedParams(3))]);
```
#### 可视化结果
绘制原始数据点以及拟合曲线以便验证效果:
```matlab
% 计算拟合曲线上的对应值
xfit = linspace(min(xdata), max(xdata), 100); % 创建平滑的 x 值范围
yfit = customFunction(fittedParams, xfit); % 计算对应的 y 值
% 绘图
figure;
plot(xdata, ydata, 'ro', 'DisplayName', 'Data Points');
hold on;
plot(xfit, yfit, '-b', 'LineWidth', 2, 'DisplayName', 'Fitted Curve');
xlabel('X Data');
ylabel('Y Data');
title('Custom Function Fitting Result');
legend show;
grid on;
```
---
以上代码实现了利用 MATLAB 中的 `lsqcurvefit` 方法完成自定义函数的曲线拟合过程。其中的关键在于如何定义目标函数,并提供合理的初始参数估计值[^1]。
如果需要更高级的功能或者生成可重复使用的代码文件,则可以通过 MATLAB 曲线拟合工具箱(Curve Fitting Toolbox)实现自动化流程[^2]。此外,还可以借助内置函数如 `polyfit()` 来处理简单的多项式拟合场景[^3]。
对于更加复杂的模型或外部库支持的情况,也可以考虑 Plotly 提供的相关功能作为补充方案[^4]。
阅读全文
相关推荐


















