从3D网格创建矩阵

时间:2019-05-03 23:05:23

标签: matlab

最初我有一个矩阵(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

1 个答案:

答案 0 :(得分:0)

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

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

请记住,取决于您要如何使用Z,Y和Z值,您可能必须进一步转换格式。在您的第一个链接中,它假定数据格式为3维1维数组,而在第二个链接中,它假定数据格式为3维2维矩阵。如果您需要一维格式的值,则可以通过:将二维矩阵转换为列向量,即:

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