1D array values to 2D matrix
8 views (last 30 days)
Show older comments
Eduardo Santos
on 8 Apr 2019
Commented: Eduardo Santos
on 4 Jan 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 Comments
Accepted Answer
Adam Danz
on 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 Comments
Adam Danz
on 27 Dec 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)
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!