Maxtrix copy and manipulation
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Fischer Zheng
il 17 Set 2015
Modificato: Matt J
il 18 Set 2015
I have one matrix and one vector. I would like to shift the elements of row forward depending on the vector index.
M = [0 2 4 5;
0 4 7 9;
0 0 0 34];
v = [4 3 2];
Shift the elements of M forward, v(1) = 4 indicate start result with the 4th element of the row. Pad the end of row with zeros.
Result = [5 0 0 0;
7 9 0 0;
0 0 34 0]
How do I do this in the vectorized way?
Thanks, Fischer
0 Commenti
Risposta accettata
Star Strider
il 17 Set 2015
This uses a loop, but I can’t see how to do this without one:
M = [0 2 4 5; 0 4 7 9; 0 0 0 34];
v = [4 3 2];
c = size(M,2);
Result = zeros(size(M));
for k1 = 1:size(M,1)
Result(k1,1:c-v(k1)+1) = M(k1,v(k1):c);
end
5 Commenti
Star Strider
il 17 Set 2015
Thank you.
If you’re doing this once for each large matrix, save the shifted matrix to a .mat file. Then you can simply load the shifted matrix when you need it, rather than recalculating it each time.
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements 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!