Conditionally replace matrix elements from other corresponding matrix

3 次查看(过去 30 天)
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

采纳的回答

Titus Edelhofer
Titus Edelhofer 2015-8-11
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

更多回答(1 个)

Star Strider
Star Strider 2015-8-11
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);

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by