MATLAB cftool 曲面图矩阵

MATLAB cftool surface plot matrix

我有一组笛卡尔坐标形式的不规则数据点,使用 MATLAB cftool 可以将其转换为曲面(见下文)。

有谁知道访问 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

提前致谢

作为一种可能的解决方法(可能不是很有效)是绘制拟合 (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]

所以你可以找回它们。

备选方案

作为替代方案,您可以使用 cftool 生成的代码为函数提供额外的输出参数(称为 createFit 或类似这样的东西)。因此,当您使用足够的参数调用该函数时,您将直接获得这些坐标。

示例:

像这样更改生成函数的 header:

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

然后在函数中body:

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

然后调用命令 Window 中的函数,例如,在 abc.

中生成正确的坐标