如何在MATLAB中仅绘制拟合曲线?

时间:2016-03-05 04:52:25

标签: matlab plot curve-fitting

我想给出一个拟合曲线,给出具有X和Y值的向量,但也有一些示例点,因为向量非常大(10k +项)。

这是我遇到的问题的等效MWE:

xData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
yData = [1.5, 2.6, 3.7, 4.8, 5.9, 7.0, 8.1, 9.2, 10.3, 11.4];
[pX, pY] = prepareCurveData(xData, yData);
ft = 'linearinterp';
[fitresult, gof] = fit( pX, pY, ft, 'Normalize', 'on' );
gX = xData(1:2:end);
gY = yData(1:2:end);
hold on;
plot(fitresult, pX, pY);
plot(gX, gY, 'k*');

这是MWE的结果。如您所见,我可以绘制选定的点(黑色),但plot(fitresult, pX, pY);命令也会绘制我用于曲线拟合过程的所有点(小的蓝色点):

Output of provided MWE

我尝试使用plot(fitresult);命令但是我失去了拟合曲线,尽管数据点也没有绘制。

那么,有没有办法在没有数据点的情况下绘制拟合曲线?

1 个答案:

答案 0 :(得分:1)

我根据评论中的讨论编辑了代码:

xData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
yData = [1.5, 2.6, 3.7, 4.8, 5.9, 7.0, 8.1, 9.2, 10.3, 11.4];
[pX, pY] = prepareCurveData(xData, yData);
ft = 'linearinterp';
[fitresult, gof] = fit( pX, pY, ft, 'Normalize', 'on' );

% set the scale for a new plot
gX = 1:20; 
gY = fitresult(gX);

plot(gX, gY, 'r'); axis tight;