1D array values to 2D matrix
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Eduardo Santos
il 8 Apr 2019
Commentato: Eduardo Santos
il 4 Gen 2021
I would like to 'convert' a 1D array to a 2D matrix considering the value inside the array as:
A =
1 3 5 4 3
B =
1 3 5 4 3
0 3 5 4 3
0 3 5 4 3
0 0 5 4 0
0 0 5 0 0
Can you suggest a fast way to do that?
0 Commenti
Risposta accettata
Adam Danz
il 8 Apr 2019
A for-loop would make a cleaner read (I could provide that upon request) but here's two lines the do the trick.
base = cellfun(@(x)repmat(x,x,1), num2cell(A), 'UniformOutput', false);
cell2mat(cellfun(@(y,n) padarray(y,n, 'post'),base, num2cell(max(A)-A), 'UniformOutput', false))
ans =
1 3 5 4 3
0 3 5 4 3
0 3 5 4 3
0 0 5 4 0
0 0 5 0 0
6 Commenti
Adam Danz
il 27 Dic 2020
A = [1,3,5,4,3]
B = zeros(max(A),numel(A));
for i = 1:numel(A)
B(1:A(i),i) = 1:A(i);
end
disp(B)
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!