如何用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
感謝
如何用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
感謝
它的代碼,你可以這樣做:
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)
聽起來像是你可能想看看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 – Oli 2012-03-20 17:57:47
我從來沒有想過使用'kron()'那樣 - 即使我經常使用它我自己的代碼。很巧妙!拿10個怪胎點! – Max 2012-03-21 14:16:13
感謝一家工廠。它確實有幫助。 – user1281585 2012-05-08 15:10:49
謝謝你奧利奇。讚賞你的關注。 – user1281585 2012-05-08 15:11:23