2017-01-08 22 views
0

は、私は、セルアレイMATLABの特定の行のセルに一致するセル配列の行インデックスを見つけるにはどうすればよいですか?

CELLARRAY = 
{{[]} {[]} {[1 1 1]} {[]} {[]} {[1 1 1]}; 

{[]} {[]} {[1 1 1]} {[]} {[]} {[]}; 

{[]} {[]} {[]} {[]} {[]} {[]}} 


A = {{[]} {[]} {[1 1 1]} {[]} {[]} {[]}} 

Aと一致するCELLARRAY内の行インデックスを見つけるスマートな方法がありますがあると?私の答えは2だろうか?

答えて

3

おそらく最速の方法はちゃんとそれを最適化することができるはず行とMATLABのJITコンパイラをループのためになるだろう。

matches = false(1, size(CELLARRAY, 1)); 

for k = 1:size(CELLARRAY, 1) 
    matches(k) = isequal(CELLARRAY(k,:), A); 
end 

indices = find(matches); 

代わりに、あなたはあなたのための操作を実行するためにcellfunのようなものを使用することができますが、それはおそらく

matches = cellfun(@(x)isequal(x, A), num2cell(CELLARRAY, 2)); 
indices = find(matches) 
+0

おかげで百万遅くなります。 – Cheng

関連する問題