How to add lower triangle of zeros/indent to each row, in a matrix?

1 view (last 30 days)
I have this matrix:
1 2 3 4 5 6 7 8 5 5
3 3 3 3 3 4 4 4 5 5
1 4 3 4 3 4 4 4 5 5
3 3 3 3 4 4 4 5 5 5
And I want this as the result:
1 2 3 4 5 6 7 8 5 5 0 0 0
0 3 3 3 3 3 4 4 4 5 5 0 0
0 0 1 4 3 4 3 4 4 4 5 5 0
0 0 0 3 3 3 3 4 4 4 5 5 5
How can I do this as a script?
Please help
Thank you
  1 Comment
Catalytic
Catalytic on 25 Apr 2021
It appears that you have not Accept-clicked any of the answers you have been given to your other questions.
Were they all unhelpful?

Sign in to comment.

Accepted Answer

Matt J
Matt J on 25 Apr 2021
Edited: Matt J on 25 Apr 2021
B=[1 2 3 4 5 6 7 8 5 5
3 3 3 3 3 4 4 4 5 5
1 4 3 4 3 4 4 4 5 5
3 3 3 3 4 4 4 5 5 5];
[m,n]=size(B);
result=spdiags(B,0:n-1,m,n+m-1);
full(result)
ans = 4×13
1 2 3 4 5 6 7 8 5 5 0 0 0 0 3 3 3 3 3 4 4 4 5 5 0 0 0 0 1 4 3 4 3 4 4 4 5 5 0 0 0 0 3 3 3 3 4 4 4 5 5 5
  3 Comments
Matt J
Matt J on 25 Apr 2021
You're quite welcome, but please Accept-click the answer to indicate that it resolved the problem.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!