0

我希望将生成的结果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   
4

2 回答 2

2

你的问题不是很清楚,但我假设你试过了

matchIdx(:,i) = find(match(:,i));

这是行不通的,因为find(match(:,1))并且find(match(:,2))不能保证长度相同。

使用元胞数组对你有用吗?

matchIdx{i} = find(match(:,i));
于 2012-05-31T20:35:06.800 回答
0

您可以使用简单的相等来代替 ISMEMBER。在一行中:

>> matchIdx = arrayfun(@(x) find(data==x), check, 'Uniform',false)
matchIdx = 
    [         2]
    [3x1 double]
    [2x1 double]
于 2012-06-01T00:43:27.730 回答