Как найти индекс строки массива ячеек, который соответствует определенной строке ячеек в MATLAB?
Скажем, у меня есть массив ячеек
CELLARRAY =
{{[]} {[]} {[1 1 1]} {[]} {[]} {[1 1 1]};
{[]} {[]} {[1 1 1]} {[]} {[]} {[]};
{[]} {[]} {[]} {[]} {[]} {[]}}
A = {{[]} {[]} {[1 1 1]} {[]} {[]} {[]}}
Есть ли умный способ найти индекс строки в CELLARRAY
это соответствует A
? и мой ответ будет 2?
1 ответ
Решение
Вероятно, самым быстрым способом будет цикл for через строки, и JIT-компилятор MATLAB должен быть в состоянии прилично оптимизировать это.
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)