【发布时间】:2012-03-21 01:55:41
【问题描述】:
如何在 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 中对其进行编码
谢谢
【问题讨论】:
如何在 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 中对其进行编码
谢谢
【问题讨论】:
听起来您可能想看看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
【讨论】:
kron() - 尽管我已经经常使用我自己的代码。非常巧妙!拿 10 个极客积分!
你可以这样做:
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)
【讨论】: