我有一个4D向量大小(N_square)=(64,32,87,1460) 并且我需要对小于0的值过滤整体N_square。然而,我需要获取对应于那些N ^ 2 <0的压力值(第三维度)。 0值并制作它们的直方图。我已经想出了如何按照我想要的方式过滤N ^ 2的值,现在我试图用正确的值抓住第三维,并用压力值创建一个新的矩阵。这是我的代码,过滤N ^ 2。
N_square(N_square > 0) = 0);
N_square = abs(N_square);
这一部分的问题在于我最终得到了我想要的所有值的向量,然后是一堆零的零。
任何想法或想法?我真的需要尽快完成这项工作。
答案 0 :(得分:0)
这会解决您的问题吗?
X = ones(2,3,4,5);
X(:,:,2,:) = -1;
X(:,:,4,:) = -1;
X(1,1,3,1) = -1;
X(1,1,1,1) = -1;
[I1,I2,I3,I4]=ind2sub(size(X), find(X<0));
hist(I3)
MATLAB矩阵有两种索引,下标和linear indices。下标索引是您习惯使用的X(i1,i2,i3,i4)
,但您也可以编写X(k)
这是一个线性索引。调用find(X<0)
会使X
中所有条目的线性索引小于零。 ind2sub()
将线性索引转换为下标索引。 hist(I3)
然后绘制第三个索引的分布。