Borrar filtros
Borrar filtros

Conditionally replace matrix elements from other corresponding matrix

3 visualizaciones (últimos 30 días)
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

Respuesta aceptada

Titus Edelhofer
Titus Edelhofer el 11 de Ag. de 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

Más respuestas (1)

Star Strider
Star Strider el 11 de Ag. de 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);

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by