2017-01-08 8 views
0

Скажем, у меня есть массив ячеекКак найти индекс строки массива ячеек, который соответствует определенной строке ячеек в MATLAB?

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

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

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


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

Есть умный способ найти индекс строки внутри CELLARRAY, который соответствует A? и мой ответ будет 2?

ответ

3

Возможно, самый быстрый способ - цикл цикла через строки, а компилятор MITLAB 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