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 に答える