如何在MATLAB中用另一个矩阵替换矩阵的元素?

时间:2012-03-20 17:39:30

标签: matlab matrix

如何在MATLAB中用另一个矩阵替换矩阵的元素?

例如:假设我们有一个矩阵A,其中

A=[1 0 0; 0 1 0; 1 0 1]

我想用

替换所有的

J=[1 0 0; 0 1 0; 0 0 1]

和零

K=[0 0 0; 0 0 0; 0 0 0]

这样我就可以获得9x9矩阵。那么我们将如何在MATLAB中编写代码

由于

2 个答案:

答案 0 :(得分:7)

听起来你可能想看看kronecker tensor product。这不是一般情况,但这个想法应该适用于你想要的东西

>> kron(A==1,J)+kron(A==0,K)

ans =

     1     0     0     0     0     0     0     0     0
     0     1     0     0     0     0     0     0     0
     0     0     1     0     0     0     0     0     0
     0     0     0     1     0     0     0     0     0
     0     0     0     0     1     0     0     0     0
     0     0     0     0     0     1     0     0     0
     1     0     0     0     0     0     1     0     0
     0     1     0     0     0     0     0     1     0
     0     0     1     0     0     0     0     0     1

,对于示例,它将简化为更简单的命令:

>> kron(A,J)

ans =

     1     0     0     0     0     0     0     0     0
     0     1     0     0     0     0     0     0     0
     0     0     1     0     0     0     0     0     0
     0     0     0     1     0     0     0     0     0
     0     0     0     0     1     0     0     0     0
     0     0     0     0     0     1     0     0     0
     1     0     0     0     0     0     1     0     0
     0     1     0     0     0     0     0     1     0
     0     0     1     0     0     0     0     0     1

答案 1 :(得分:0)

你可以这样做:

A2=imresize(A,size(A).*size(J),'nearest');
J2=repmat(J,size(A));
K2=repmat(K,size(A));
A2(A2==1)=J2(A2==1);
A2(A2==0)=K2(A2==0)