如何通过matlab中的替换创建新矩阵?

时间:2016-05-16 15:00:03

标签: matlab matrix

我有两个矩阵:

A=[1 2 3; 4 5 6; 7 8 9]
C=[0 0 2; 0 0 1; 0 0 8]

我想保留C的非零值并创建D.然后,用A矩阵替换零元素。

所以D应该是:

D=[1 2 2; 4 5 1; 7 8 8]

我试试这段代码:

A=[1 2 3; 4 5 6; 7 8 9]
C=[0 0 2; 0 0 1; 0 0 8]
T=A(C==0)
R=sparse(T)
K=find(sparse(C))

它没有工作

3 个答案:

答案 0 :(得分:3)

使用:

D = A;
D(C~=0) = C(C~=0);

答案 1 :(得分:3)

drorco的答案是正确的方法,但有一个我无法抗拒的单行:

D = ~C.*A + ~~C.*C;

答案 2 :(得分:2)

A=[1 2 3; 4 5 6; 7 8 9];
C=[0 0 2; 0 0 1; 0 0 8];
D=A;
inds=find(C~=0);
D(inds)=C(inds)

D =

 1     2     2
 4     5     1
 7     8     8