Conditionally replace matrix elements from other corresponding matrix

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

1 件のコメント

Matthew Knights
Matthew Knights 2015 年 8 月 11 日
That works great. Thanks for the swift answer guys.

サインインしてコメントする。

 採用された回答

Titus Edelhofer
Titus Edelhofer 2015 年 8 月 11 日

2 投票

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 日

1 投票

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);

カテゴリ

ヘルプ センター および File ExchangeMatrices and Arrays についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by