2016-03-05 86 views
1

我想繪製一個具有X和Y值的向量的擬合曲線,但也有一些示例點,因爲向量確實很大(10k +項)。如何在MATLAB中繪製擬合曲線?

這是我面臨的問題的等效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);命令,但是我失去了擬合曲線,儘管數據點也沒有繪製。

那麼,有沒有辦法繪製一個沒有數據點的擬合曲線?

+2

怎麼樣只用'圖(fitresult,GX,GY, 'K *');'。如果你看一下劇情的文檔,你正在繪製兩個不同的信息,(fitresult)和(gX,gY,'k *') –

+0

@ R.Falque忘記我說的話 - 工作!非常感謝!只要把這個作爲答案,我會投票! :) – JBFWP286

+0

@ R.Falque爲了回答你的其他問題,我嘗試了'plot(fitresult);'但它沒有顯示出合適的曲線輸出 - 但也沒有錯誤。 – JBFWP286

回答

2

我根據註釋討論編輯代碼:

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; 
+0

再次,非常感謝!這比我想象的更簡單! :) – JBFWP286