从矩阵MATLAB中“查找并替换”

时间:2012-11-06 01:08:38

标签: matlab matrix lookup

我有一个如下的矩阵:

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

1 个答案:

答案 0 :(得分:4)

您可以使用逻辑索引巧妙地在一行中执行此操作:

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