在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]]
我该怎么做?
谢谢你的帮助。
这个解决方案可能不简单,但它会起作用。基本上,只需遍历多维单元格数组中的每个单元格,就可以找到单词的位置:
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