2012-03-20 213 views
0

如何用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

感謝

回答

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) 
+0

謝謝你奧利奇。讚賞你的關注。 – user1281585 2012-05-08 15:11:23

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 
+0

更好的回答+1 – Oli 2012-03-20 17:57:47

+0

我從來沒有想過使用'kron()'那樣 - 即使我經常使用它我自己的代碼。很巧妙!拿10個怪胎點! – Max 2012-03-21 14:16:13

+0

感謝一家工廠。它確實有幫助。 – user1281585 2012-05-08 15:10:49

相關問題