Matlab
电气工程

MATLAB中怎么把多条曲线拟合在同一图中?

我指的是拟合为平滑曲线,不要plot(x1,y1,...xn,yn)那种,因为plot函数的效果和cftool相比太差,可cftool只能拟合单变量曲…
关注者
52
被浏览
212,804

7 个回答

plot 只是根据你的数据画图,也就是将相邻数据用线段连结起来,本身没有什么拟合作用

如果你只是想得到平滑曲线,可以用插值,举个例子:

x = linspace(0,2*pi,7);
y = sin(x);
plot(x,y)

这里在 y = sin(x) 曲线的 [0 2*pi] 区间上取了 7 个点,作图显然不够平滑。下面做Cubic spline 插值(当然也可以选择其他插值方式) 处理:

xi = linspace(0,2*pi,50);
yi = spline(x,y,xi);
plot(x,y,'--',xi,yi)

这里的图一样是 plot 绘制的,所以说是否平滑不是 plot 决定的,而是你的数据决定的

多条曲线插值也是类似的,常用的插值函数如 spline,interp1 都支持插值多条曲线(即使有不支持或者不方便(例如不同曲线的点数不同)的也可以写个循环解决):

x = 0:2:20;
y = bsxfun(@besselj,(0:3)',x);
xi = 0:.1:20;
yi = spline(x,y,xi);
axes('colorOrder',lines(4)), hold on
plot(nan,nan,'k--',nan,nan,'k',x,y,'--',xi,yi), legend('x-y','xi-yi')
编辑于 2016-05-23 11:56

你好,利用cftool工具箱大概就两种方法,1.利用拟合函数重新画一次,2.把两张图片利用matlab粘贴到一起处理,大致步骤就是:1、首先,把拟合的图片print to figure,把两个fig都打开;2、在一个图中选择曲线并复制(方法:按工具条上Tool选项下点击Edit plot 按钮,然后选择曲线,点右键选copy)。3、把曲线贴到另一个figure中(同样按下Tool选项下的Edit plot 按钮,然后右键选paste)。4、根据需要加legend。

发布于 2017-03-26 17:19

在MATLAB中,你可以使用 fit 函数和 fittype 对象来实现对多条曲线的拟合,然后使用 plot 函数将原始数据和拟合曲线绘制在同一图中。这样可以更灵活地控制拟合的方式和显示效果。

以下是一个简单的例子,演示如何使用 fit 对多条曲线进行平滑拟合:

% 示例数据
x = linspace(0, 10, 100);
y1 = sin(x) + 0.2 * randn(size(x));
y2 = cos(x) + 0.2 * randn(size(x));

% 创建拟合类型
ft = fittype('a*sin(b*x) + c', 'independent', 'x', 'dependent', 'y');

% 初始参数猜测
startPoints = [1, 1, 0];

% 对每条曲线进行拟合
fit1 = fit(x', y1', ft, 'StartPoint', startPoints);
fit2 = fit(x', y2', ft, 'StartPoint', startPoints);

% 绘制原始数据和拟合曲线
figure;
plot(x, y1, 'o', x, y2, 'o', 'DisplayName', 'Raw Data');
hold on;
plot(fit1, 'DisplayName', 'Fit for y1');
plot(fit2, 'DisplayName', 'Fit for y2');
hold off;

legend;
xlabel('X');
ylabel('Y');
title('Curve Fitting for Multiple Curves');

在这个例子中,fittype 对象 ft 定义了拟合模型。然后,通过 fit 函数对每条曲线进行拟合,并使用 plot 函数将原始数据和拟合曲线绘制在同一图中。你可以根据实际情况调整拟合模型和初始参数。

发布于 2023-11-20 21:49

关键词:Matlab,cftool多曲线拟合

上传图片质量捉鸡。到我的摆渡网盘或者摆渡文库下文档看吧,完全免费!

pan.baidu.com/s/1i5LuqE

wenku.baidu.com/view/31

编辑于 2017-04-10 19:24

你可以用cftool工具箱拟合函数表达式,复制进脚本,重新用plot+hold on绘制

发布于 2024-03-26 23:26

不明白题主想拟合什么类型的数据?cftool可以拟合两个变量的数据啊,还有各种拟合方式可选。

“老版本的cftool可以直接点击“newfit” 导入数据并在同一幅图里拟合。如果你的matlab比较新,就用 cftool -v1 打开老版本的cftool。”——百度知道某大神的回答,亲测好用。

编辑于 2016-11-26 21:10

hold on

发布于 2016-05-23 13:31