Extract 3D cells with nonzero elements, from a 3D cell array.

9 ビュー (過去 30 日間)
George Papas
George Papas 2016 年 9 月 12 日
コメント済み: George Papas 2016 年 9 月 12 日
Hi guys! I have binary masks saved in 3D arrays (e.g. Mask(:,:,40), see attached Matlab file) and I want to extract only the 3D cell arrays which contain nonzero elements in a sequential order (e.g. if these are 20, then NMask(:,:,20)). Any ideas would be much appreciated.
  1 件のコメント
Stephen23
Stephen23 2016 年 9 月 12 日
See Guillaume's answer for a much simpler solution.

サインインしてコメントする。

採用された回答

KSSV
KSSV 2016 年 9 月 12 日
clc; clear all ;
load Mask.mat ;
k = Combinedmask ;
[m,n,p] = size(k) ;
count = 0 ;
for i = 1:p
ki = k(:,:,i) ;
if sum(any(ki))~=0
count = count+1 ;
iwant{count} = ki ;
end
end
  3 件のコメント
Stephen23
Stephen23 2016 年 9 月 12 日
編集済み: Stephen23 2016 年 9 月 12 日
There is no point in using a loop to solve this task. See Guillaume's answer for a much simpler solution.
George Papas
George Papas 2016 年 9 月 12 日
Thanks Stephen.

サインインしてコメントする。

その他の回答 (1 件)

Guillaume
Guillaume 2016 年 9 月 12 日
Well, if you want nice and concise:
filteredmask = Combinedmask(:, :, any(any(Combinedmask, 1), 2))
No need for cell arrays, loops, ifs, etc., just one line.
  1 件のコメント
George Papas
George Papas 2016 年 9 月 12 日
Thank you Guillaume, that's true. It works very well and it is really concise indeed!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMultidimensional Arrays についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by