【问题标题】:MATLAB cftool surface plot matrixMATLAB cftool 曲面图矩阵
【发布时间】:2015-07-21 16:17:45
【问题描述】:

我有一组笛卡尔坐标形式的不规则数据点,使用 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

提前致谢

【问题讨论】:

    标签: matlab surface


    【解决方案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]
    

    这样您就可以检索它们。

    替代

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

    例子:

    像这样更改生成函数的标题:

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

    然后在函数体中:

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

    然后在命令行窗口中调用函数,例如,在abc 中产生正确的坐标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      相关资源
      最近更新 更多