2011-12-06 8 views
2

大きな画像マトリクス125x200x3を持っています。画像には黒い部分がたくさんあるので、0の行がたくさんあります。これらの黒い部分をすべて完全に取り除きたい。私はすべて(m == 0,3)を使用するべきであることを知っていますが、3dマトリックスでどのように使用するのかよく分かりません。matlabの3dマトリクスの全0行をすべて削除します

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

が行列を超える... すべてのヘルプは大歓迎です!

答えて

4

あなたはすべての黒を含むを削除したい場合は、次の操作を行います。

(あなたは何をしていた) ALLへの内部呼び出しはあなたのものと125バイ200論理行列を与える
m(all(all(m == 0,3),2),:,:) = []; 

すべての黒画素について。 ALLへの外部呼び出しは、次元2(列)全体で動作し、すべての黒を含む行に対して1を持つ論理ベクトルを与えます。これが索引として使用して行を削除します。