MATLAB cftool曲面图矩阵

时间:2015-07-21 16:17:45

标签: matlab surface

我有一组不规则的数据点,采用笛卡尔坐标,使用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 个答案:

答案 0 :(得分:1)

可能的解决方法(可能效率不高)是绘制拟合的输出(fitresult)并获取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;
例如,

在命令窗口中调用该函数会在abc中生成正确的坐标。