在matlab中删除3d矩阵中的所有完整0行

时间:2011-12-06 17:57:18

标签: matlab matrix

我有一个125x200x3的大图像矩阵,图像有很多大的黑色区域,所以有很多行都是0。我想完全删除所有这些黑色区域。我知道我应该使用all(m == 0,3)但似乎我不太明白如何将它与3d矩阵一起使用。

m(all(m==0,3),:,:)=[]

超过矩阵...... 任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:4)

如果要删除包含全黑的,请执行以下操作:

m(all(all(m == 0,3),2),:,:) = [];

ALL的内部调用(你正在做的事情)会给你一个125乘200的逻辑矩阵,每个黑色像素都有一个矩阵。对ALL的外部调用跨维度2(列)进行操作,为您提供一个逻辑向量,其中包含所有包含所有黑色的行。然后,您可以将其用作删除行的索引。