2015-07-21 57 views
0

我有一組不規則的笛卡爾座標形式的數據點集,它使用MATLAB cftool可以變成一個表面(見下文)。MATLAB cftool表面圖矩陣

MATLAB cftool surface

有誰知道的方式來訪問矩陣的直角座標系是MATLAB產生,以便它繪製該表面?

爲該圖生成的代碼(見下文)不提供訪問任何必須產生以適合表面的附加插值點。

%% Fit: 'untitled fit 1'. 
[xData, yData, zData] = prepareSurfaceData(x1, y1, z1); 

% Set up fittype and options. 
ft = 'linearinterp'; 

% Fit model to data. 
[fitresult, gof] = fit([xData, yData], zData, ft, 'Normalize', 'on'); 

% Plot fit with data. 
figure('Name', 'untitled fit 1'); 
h = plot(fitresult, [xData, yData], zData); 
legend(h, 'untitled fit 1', 'z1 vs. x1, y1', 'Location', 'NorthEast'); 
% Label axes 
xlabel x1 
ylabel y1 
zlabel z1 
grid on 

預先感謝

回答

1

作爲一個可能的解決方法(可能不是很有效)是繪製配合(​​)的輸出端,並獲取所繪製的表面的XDataYDataZData性質。

例如,進行虛擬裝配後:

hP = plot(fitresult) 

產生這些屬性爲hP

Surface (curvefit.gui.FunctionSurface) with properties: 

     EdgeColor: [0 0 0] 
     LineStyle: '-' 
     FaceColor: 'flat' 
    FaceLighting: 'flat' 
     FaceAlpha: 1 
      XData: [51x49 double] 
      YData: [51x49 double] 
      ZData: [51x49 double] 
      CData: [51x49 double] 

所以,你可以檢索它們。

ALTERNATIVE

作爲替代,可以使用由cftool產生的代碼,以提供額外的輸出函數的自變量(稱爲createFit或somethinbg這樣)。因此,當您用足夠的參數調用函數時,您將直接獲得這些座標。

實施例:

變化所產生的功能的,像這樣的標題:

[fitresult, gof,a,b,c] = createFit1(x, y, z) 

,然後在功能體:

a = xData; 
b = yData; 
c = zData; 

然後調用在命令窗口的功能,例如,產生a,bc中的正確座標。