我希望将matchIdx
生成的结果保存到单独的向量矩阵中。然后,此Idx可用作进一步操作中的地址。
问题是当我尝试分配到matchIdx(:,i)
时,由于列的大小不匹配而导致错误。
我希望有人可以提供帮助。谢谢。
data = [1;2;3;3;5;6;6;3;8;8;9;5;6;7;8;9;10];
check = [2;3;5];
for i=1:3
match(:,i) = ismember(data,check(i));
matchIdx = find(match(:,i))
end
答案 0 :(得分:2)
你的问题并不完全清楚,但我认为你试过了
matchIdx(:,i) = find(match(:,i));
这不起作用,因为find(match(:,1))
和find(match(:,2))
不能保证长度相同。
使用单元格数组会为你工作吗?
matchIdx{i} = find(match(:,i));
答案 1 :(得分:0)
您可以使用简单的相等而不是ISMEMBER。在一行中:
>> matchIdx = arrayfun(@(x) find(data==x), check, 'Uniform',false)
matchIdx =
[ 2]
[3x1 double]
[2x1 double]