1

次のようなマトリックスがあります。

a = [10 0; 12 5; 10 0; 12 0; 15 0; 15 2];
a =

10     0
12     5
10     0
12     0
15     0
15     2

ゼロを見つけて、最初の列の値に依存する値に置き換える新しいマトリックスを作成しようとしています。キーはこのマトリックスです:

Key =

10   100
12   200
15   300

最初の列の値がすでにゼロより大きい場合は、そのままにしておきます。出力は次のようになります。

Output =

10   100
12     5
10   100
12   200
15   300
15     2
4

1 に答える 1

4

スマートに論理インデックスを使用して、1 行で実行できます。

a(~a(:,2),2)=arrayfun(@(x)Key(Key(:,1)==x,2),a(~a(:,2),1))

%a =    
%    10   100
%    12     5
%    10   100
%    12   200
%    15   300
%    15     2
于 2012-11-06T01:20:24.753 に答える