您可以使用cellfun和arrayfun的组合来完成此操作.首先创建一个单元格数组:
>> mycellarray = { [1 2], [4 5], [3 4], [1 2 3 4 5] };
要获取包含特定数字(例如1)的单元格数组元素,可以使用cellfun:
>> find( cellfun(@(s)ismember(1, s), mycellarray) )
ans =
1 4
这告诉你1是在mycellarray的第1和第4个元素.现在,您可以使用arrayfun将其映射到所有可能索引的列表上.生成的数组可能长度不同,因此我们需要将“UniformOutput”设置为false.
>> n = 5;
>> result = arrayfun(@(i)find(cellfun(@(s)ismember(i,s), mycellarray)), 1:n, ...
'UniformOutput', false);
元素是您想要的索引向量 –
>> result{1}
ans =
1 4 # since 1 is in the 1st and 4th array
>> result{3}
ans =
3 4 # since 3 is in the 3rd and 4th array