2016-04-07 113 views
1

我想從X Y Z矩陣中繪製平滑的輪廓圖。matlab中的平滑輪廓圖

sf = fit([X Y] Z, 'poly23'); 
plot(sf); 

我還沒有足夠多的平滑曲線.. 我需要什麼?

enter image description here

+0

你的X Y和Z是什麼?它會幫助更多,如果我們有一個你試圖繪製數據的例子:) – Lincoln

+0

這是一列數據。它們太大以至於無法連接:( Z是強度點(X,Y) – delkov

回答

1

您可以使用功能,如griddatacsaps。他們一起將引導你順利地結果你想要的。第一個函數爲您的數據矩陣集添加附加點。第二個使結果更加平滑。代碼示例如下。在這個例子中,平滑首先在X方向完成,然後在Y方向完成。嘗試使用resolutionsmoothing_parameter(但這些參數的當前設置應該是OK)。

x = min_x:step_x:max_x; 
y = min_y:step_y:max_y; 
resolution = 10; 

xg = min_x:(step_x/resolution):max_x; 
yg = min_y:(step_y/resolution):max_y; 
[X,Y] = meshgrid(x,y); 
[XG,YG] = meshgrid(xg,yg);  


smoothing_parameter = 0.02; 
fitted = griddata(X,Y,Z,XG,YG,'cubic'); 
fitted_smoothed_x = csaps(xg,fitted,smoothing_parameter,xg); 
fitted_smoothed_xy = csaps(yg,fitted_smoothed_x',smoothing_parameter,yg); 

surf(XG,YG,fitted_smoothed_xy'); 

編輯:如果你想要得到的只是一個等高線圖,你可以做,例如,作爲介紹如下。由於我沒有真實數據,我將使用內置函數peaks來生成一些。

[X,Y,Z] = peaks(30); 
figure 
surfc(X,Y,Z) 
view([0 90]) 
zlim([-10 -8]) 

在這裏,您只需從上面看下面的等高線圖即可。

+0

謝謝! hp = surfc(...); set(hp(2),'ShowText','on') – delkov

+0

但我需要輪廓圖 – delkov

+0

如何將csaps應用於輪廓圖 – delkov