Replacing several values in multidimensional array simultaneously
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
David Hoffmeyer
am 14 Sep. 2020
Bearbeitet: Bruno Luong
am 14 Sep. 2020
I have a multidimensional array, e.g.
A(:,:,1) = [1 2 3 ; 4 5 6];
A(:,:,2) = [7 8 9 ; 10 11 12];
I want to replace several of the values in this array with the same value simultaneously. Specifically I want to do this column-wise, the result should be e.g.
A(:,2,1) = [-1 ; -2];
A(:,3,2) = [-1 ; -2];
yielding
A(:,:,1) = [1 -1 3 ; 4 5 -1];
A(:,:,2) = [7 -2 9 ; 10 11 -2];
I attempted this by
B = [2 3]; C = [1 2];
A(:,B,C) = [-1 ; -2];
but it does not give the wanted result.
Any idea on how to do this without performing a for-loop?
0 Kommentare
Akzeptierte Antwort
Bruno Luong
am 14 Sep. 2020
Bearbeitet: Bruno Luong
am 14 Sep. 2020
A(:,:,1) = [1 2 3 ; 4 5 6];
A(:,:,2) = [7 8 9 ; 10 11 12];
s = size(A);
A(:, sub2ind(s(2:3),[2 3],[1 2])) = 0 % = [0 0; 0 0]
2 Kommentare
Bruno Luong
am 14 Sep. 2020
Bearbeitet: Bruno Luong
am 14 Sep. 2020
Just replace the RHS as I hint in my answer with "% = [0 0; 0 0]"
A(:, sub2ind(s(2:3),[2 3],[1 2])) = [[-1;-2], [-1;-2]]
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Numeric Types finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!