[英]MATLAB: Creating an Array/Vector from one dimension of a 4D matrix.
我有一个大小为(N_square)=(64,32,87,1460)的4D向量,我需要过滤小于值0的整个N_square。但是,我需要取对应于N ^ 2 <0的值,并对其进行直方图处理。 我已经想出了如何以我想要的方式过滤N ^ 2的值,现在我试图使用正确的值来捕获第3维,并仅用压力值创建一个新矩阵。 这是我的过滤N ^ 2的代码。
N_square(N_square > 0) = 0);
N_square = abs(N_square);
这部分的问题还在于,我最终得到的是一个我想要的所有值的向量,然后是一堆零。
有什么想法或想法吗? 我真的需要尽快完成这项工作。
这样可以解决您的问题吗?
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矩阵具有两种索引,即下标和线性索引 。 下标索引是您习惯使用X(i1,i2,i3,i4)
索引X(i1,i2,i3,i4)
但是您也可以编写X(k)
这是一个线性索引。 调用find(X<0)
会使X
中所有条目的线性索引小于零。 ind2sub()
将线性索引转换为下标索引。 然后, hist(I3)
绘制第三个索引的分布。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.