2016-11-13 6 views
-2

ich einen Vektor, wieWie diese Matrix in MATLAB erstellen

A=[4;3;1;6]

haben und ich möchte die unten 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];

eine Matrix mit den Elementen erstellen Wie kann ich Tun Sie dies in MATLAB? die Anzahl der Spalten entspricht dem Maximum von A.

+1

Die Frage ist unklar. B speichert Indizes von Elementen in A (weil A nur 4 Elemente hat und in Maltab gibt es keinen Index 0). Die Beziehung, die Sie zwischen A und B erhalten möchten, ist mir unklar. –

+1

Was ist los mit Loops? Loops sind sehr nützliche Dinge. In diesem Fall ist eine Schleife wahrscheinlich am logischsten zu verwenden. – beaker

+0

Soll die Anzahl der Spalten ein fester Wert oder gleich dem Maximum von 'A' sein? Hast du irgendwas probiert? Hast du einen Code? – beaker

Antwort

1

Hier sind zwei Möglichkeiten, dies zu tun: eine vektorisiert, und eine in einer Schleife.

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

oder

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 

Ergebnisse:

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