1

3xK のサイズの値need_find = [1 3 4]と行列があるとします。AA の対応する行の値を見つけたいのですが、need_find各行を反復する代わりに、ベクトル化されたソリューションを matlab に適用するにはどうすればよいですか?

詳細な例については、期待どおりです。

A = [1 3 4; 1 3 5; 3 4 5];
my_method_do_what_I_want(A,need_find);

メソッドは戻ります

ans = [1;2;2] 
% so I find the index of each element of need_find at corresponding row at A

簡単に言うと、行 1 で 1 を検索し、行 2 で 3 を検索し、行 3 で 4 を検索します。

4

1 に答える 1

1

1 つの方法を次に示します。

A = [1 3 4; 1 3 5; 3 4 5];
need_find = [1 3 4]
[~,idx] = find(bsxfun(@eq,A,need_find(:)))

返す

idx =

     1
     2
     2

行に値が繰り返されている場合、または一致するものがまったくない場合、この単純なワンライナーは機能しませんAが、私はあなたの例でしか行けません...

于 2013-08-21T22:29:26.107 に答える