2016-11-13 60 views
-2

創建這個矩陣我有一個載體,諸如如何在MATLAB

A=[4;3;1;6]

,我想從A

B=[6 5 4 3 2 1;4 3 2 1 0 0;3 2 1 0 0 0;1 0 0 0 0 0];

創建與下面的元素的矩陣我怎樣才能在MATLAB中做這個?列的數量等於A的最大值。

+1

這個問題不清楚。 B存儲A中元素的索引(因爲A只有4個元素,而在maltab中沒有0索引)。你希望在A和B之間獲得的關係對我而言並不清楚。 –

+1

循環出了什麼問題?循環是非常有用的東西。在這種情況下,循環可能是最合乎邏輯的使用。 – beaker

+0

你想要列數是一個固定值,還是等於'A'的最大值?你有嘗試過什麼嗎?你有任何代碼嗎? – beaker

回答

1

這裏有兩種方法可以做到這一點:一個是矢量化的,一個是循環的。

A=[4;3;1;6]; 
B = max(bsxfun(@minus, sort(A, 'descend'), 0:(max(A)-1)), 0); 

S = sort(A, 'descend'); 
m = numel(A); n = S(1); 
C = zeros(m,n); 
for k = 1:m 
    C(k,1:S(k)) = S(k):-1:1; 
end 

結果:

B = 

    6 5 4 3 2 1 
    4 3 2 1 0 0 
    3 2 1 0 0 0 
    1 0 0 0 0 0