How do you circshift progressive rows an increasing amount?
Show older comments
If I have a matrix:
[nan nan nan nan nan]
[ 1a nan nan nan nan]
[ 1b 2b nan nan nan]
[ 1c 2c 3c nan nan]
[ 1d 2d 3d 4d nan]
I want to change it to this:
[ 1a 2b 3c 4d nan]
[ 1b 2c 3d nan nan]
[ 1c 2d nan nan nan]
[ 1d nan nan nan nan]
[nan nan nan nan nan]
I tried:
for K = 1:length(A)
A = circshift(A(:,K),K);
Thank you.
4 Comments
David Hyatt
on 23 Nov 2020
Edited: David Hyatt
on 24 Nov 2020
Rik
on 23 Nov 2020
Yes, that is indeed very slow. See my answer for a faster solution.
David Hyatt
on 24 Nov 2020
Rik
on 24 Nov 2020
I have edited my answer to include the edit I meant. Dynamically growing an array is a bad idea, as mlint is warning you. You should make it a habit of resolving every mlint warning. Either suppress them (right-click and select suppress warning on this line), or change the code.
Accepted Answer
More Answers (0)
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!