【问题标题】:Creating matrix from 3d mesh从 3d 网格创建矩阵
【发布时间】:2019-05-04 10:23:57
【问题描述】:

最初我有一个矩阵 (512x512),我使用 mesh() 函数创建了一个 3d 网格。该图向我展示了山峰。我想提取每个峰的矩阵,然后计算体积。我遇到了两种解决方案:

https://de.mathworks.com/matlabcentral/answers/277512-how-to-find-peaks-in-3d-mesh

Find volume of 3d peaks in matlab

在这两种情况下,数据都以 X、Y、Z 的形式生成。但这不是我的情况。如何提取每个峰的矩阵?

peaks from 512x512 matrix

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您目前有一个 Z 值的二维矩阵。当您通过mesh() 仅绘制 Z 矩阵时,MATLAB 使用矩阵中值的行和列位置作为 X 和 Y 值。要获得明确的 X 和 Y 值,您可以使用meshgrid()。例如,假设您的 X 和 Y 值范围为 1 到 600,如链接图中所示:

    [X, Y] = 网格网格(1:600);

    请记住,根据您希望如何使用 Z、Y 和 Z 值,您可能需要进一步转换格式。在您的第一个链接中,它假设数据被格式化为 3,一维数组,而在第二个链接中,它假设数据被格式化为 3,二维矩阵。如果您需要一维格式的值,您可以通过: 将二维矩阵转换为列向量,即:

    X_flat = X(:);
    Y_flat = Y(:);
    Z_flat = Z(:);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多