繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM