How to set value in a matrix
Show older comments
I have a double matrix 4x5 matrix
A=[11 12 13 14 15;
21 22 23 24 25;
31 32 33 34 35;
41 42 43 44 45],
B=[3 0 2 4 1]
B indicates to set all the rows of B[i] in A(from row 1 to that position) to 0.
C = [0 12 0 0 0;
0 22 0 0 25;
0 32 33 0 35;
41 42 43 0 45]
Thanks
Accepted Answer
More Answers (1)
Rik
on 5 Feb 2020
This was a fun puzzle. I believe the code below is one of the many possible solutions. It does use implicit expansion, so for pre-R2016b you will have to use bsxfun.
A=[11 12 13 14 15;
21 22 23 24 25;
31 32 33 34 35;
41 42 43 44 45];
B=[3 0 2 4 1];
a=-(1:size(A,1))';
L= a+B(:)' >=0; %the (:)' is to ensure B is a row vector
C=A;C(L)=0
3 Comments
Adam Danz
on 5 Feb 2020
+1; although I like your compact version even better.
Rik
on 6 Feb 2020
Thank you. While I like the one-linerness of the compact version, I think it looks like voodoo witchcraft, so I decided to post this as the answer
Adam Danz
on 6 Feb 2020
Ha! I know what you mean....
Categories
Find more on Startup and Shutdown 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!