MATLAB - найти многомерные индексы записей, расположенных в массиве вложенных ячеек - PullRequest
0 голосов
/ 15 ноября 2018

В MATLAB, скажем, у меня есть массив ячеек:

cell_arr = {{'a', 'b', 'c'}, {'d', 'e', 'f', 'g', 'h'}, {'a', 'b', 'c'}};

Я хочу найти способ найти все места в массиве ячеек, где, например, 'a'.Так что-то вроде

where(cell_arr, 'a'); % returns e.g., [[1 1] ; [3 1]]

Как я могу это сделать?

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 15 ноября 2018

Это решение может быть не простым, но оно будет работать. По сути, просто переберите каждую ячейку в многомерном массиве ячеек и найдите местоположение слова:

function location = where(cell_arr, word)

% initialize location
location = zeros(sum(char([cell_arr{:}]) == word),2);

% loop through cell_arr to find the location
count = 0;
for i = 1:length(cell_arr)
    for j = 1:length(cell_arr{i})
        if cell_arr{i}{j} == word
            count = count + 1;
            location(count,:) = [i j];
        end
    end
end
end

Пример

where(cell_arr, 'a')

Выход:

ans =
     1     1
     3     1
...