如何在给定条件下去除矩阵子矩阵元素?

时间:2014-10-05 01:22:46

标签: matlab matrix submatrix

我知道一个矩阵说mat,如果我想删除满足特定条件的所有元素(例如元素),例如删除所有零,这将执行:

mat(mat == 0) = [];

但是我怎样才能以亚矩阵的方式做到这一点,即在给定条件下去除矩阵子矩阵元素。例如,data4d是一个大小为n1 x n2 x n3 x n4的4D矩阵。如果第四维的i - th(1=<i<=n4)子矩阵的所有元素,即data4d(:, :, :, i) == zeros(n1, n2, n3),它将被删除,即data4d(:, :, :, i) = []

如果没有简单的for循环,我怎么能这样做?以下两个版本都不起作用:

data4d(data4d == zeros(n1, n2, n3)) = [];      // version 1
data4d(data4d == zeros(n1, n2, n3, 1)) = [];   // version 2

1 个答案:

答案 0 :(得分:2)

使用anyreshape的单线:

data4D(:,:,:,~any(reshape(data4D,n1*n2*n3,n4),1)) = [];