MATLAB中怎么把多条曲线拟合在同一图中?
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')
你好,利用cftool工具箱大概就两种方法,1.利用拟合函数重新画一次,2.把两张图片利用matlab粘贴到一起处理,大致步骤就是:1、首先,把拟合的图片print to figure,把两个fig都打开;2、在一个图中选择曲线并复制(方法:按工具条上Tool选项下点击Edit plot 按钮,然后选择曲线,点右键选copy)。3、把曲线贴到另一个figure中(同样按下Tool选项下的Edit plot 按钮,然后右键选paste)。4、根据需要加legend。
在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
函数将原始数据和拟合曲线绘制在同一图中。你可以根据实际情况调整拟合模型和初始参数。
关键词:Matlab,cftool多曲线拟合
上传图片质量捉鸡。到我的摆渡网盘或者摆渡文库下文档看吧,完全免费!
http://pan.baidu.com/s/1i5LuqEh
https://wenku.baidu.com/view/314246d0541810a6f524ccbff121dd36a32dc4d7
你可以用cftool工具箱拟合函数表达式,复制进脚本,重新用plot+hold on绘制
不明白题主想拟合什么类型的数据?cftool可以拟合两个变量的数据啊,还有各种拟合方式可选。
“老版本的cftool可以直接点击“newfit” 导入数据并在同一幅图里拟合。如果你的matlab比较新,就用 cftool -v1 打开老版本的cftool。”——百度知道某大神的回答,亲测好用。
hold on