Conditionally replace matrix elements from other corresponding matrix
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Matthew Knights
am 11 Aug. 2015
Kommentiert: Matthew Knights
am 11 Aug. 2015
I have two matrices of the same size, X and Y.
I want to replace elements of X if certain conditions are met, with the corresponding element of matrix Y, but crucially without using a loop.
The conditions are: X<Y/exp(1)&&X>1e3
i.e. I was trying something like: X(X<Y/exp(1)&&X>1e3)=Y, but obviously this doesn't work.
What would be the best way to acheive this?
Thanks,
Matt
Akzeptierte Antwort
Titus Edelhofer
am 11 Aug. 2015
Hi Matt,
two changes: you need to use "&" instead of "&&" to work for vectors, and you need to index into Y the same way.
idx = X<Y/exp(1) & X>1e3;
X(idx) = Y(idx);
Titus
0 Kommentare
Weitere Antworten (1)
Star Strider
am 11 Aug. 2015
This runs. I will leave it to you to determine if it works with your matrices:
X = randi(1E+5, 10);
Y = randi(1E+5, 10);
logidx = X<Y/exp(1) & X>1e3; % Logical Index Array
X(logidx) = Y(logidx);
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!