MATLAB:从4D矩阵的一维创建数组/向量。

时间:2016-06-12 17:46:07

标签: arrays matlab matrix

我有一个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);

这一部分的问题在于我最终得到了我想要的所有值的向量,然后是一堆零的零。

任何想法或想法?我真的需要尽快完成这项工作。

1 个答案:

答案 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)然后绘制第三个索引的分布。