2016-02-14 84 views
0

我在Matlab中有兩個矩陣。重排排列中的元素matlab

A = enter image description here

B = enter image description here

我要分配根據同一小區值到它的對應的所述的矩陣列數和移動元件有具有元件。我想用B映射B的元素,以便B元素也移動到那個位置。

我想這

A = enter image description here

也因此,

B = enter image description here

有沒有辦法做到這一點? 謝謝。

回答

1

我能想到的最簡單的方法是創建行/列對,其中行對應於矩陣的行位置,列位置是矩陣本身的實際元素。在這些行/列對中看到的值再次只是矩陣值本身。

你可以很容易地用sparse來做到這一點。重塑基質上面和A存儲該:

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

...我會做這種方式:

r = repmat((1:size(A,1)).', 1, size(A,2)); %' 
S = full(sparse(r(:),A(:),A(:))); 

的第一行代碼生成矩陣中的每個A值行的位置,然後使用sparse指定行/列對和相關值,我們使用full將其轉換爲適當的數字矩陣。

我們得到:

S = 

    1  2  0  0  5  0  0  8 
    1  2  0  4  0  0  7  0 

你也可以做同樣的矩陣B。你會使用sparse和指定第三個參數是B代替:

B = [0.5 0.2 0.6 0.8; 0.4 0.6 0.8 0.9]; 
S2 = full(sparse(r(:),A(:),B(:))); 

我們得到:

>> S2 

S2 = 

    0.5000 0.2000   0   0 0.6000   0   0 0.8000 
    0.4000 0.6000   0 0.8000   0   0 0.9000   0 
+0

感謝。問題的描述發生了變化。對不起。 – user5916581

+0

@ user5916581這通常是皺眉。在發佈之前,您應該徹底檢查您的問題。無論如何,我已經改變了我的答案。 – rayryeng

+0

我真的很抱歉。這不會再發生。謝謝萬億 – user5916581