How to swap array element from two arrays conditionally

I'm looking to plot a matrix using data from two arrays. If the second array has a number which is not zero in an element, this element is moved into the first array. I have seen how this might be done using deal(), but I would like to avoid using a loop with if statement for performance reasons. Is there a convenient way of doing this?
An example of this is follows, with arrays A, B and C ( the result);
Array.png

 採用された回答

Akira Agata
Akira Agata 2019 年 12 月 4 日

1 投票

By using indexing technique, you can simply do this kind of task.
The following is an example:
% Original matrixes
A = [...
0 1 1 1 0 0;...
0 0 0 0 0 0;...
0 0 0 0 0 0];
B = [...
0 3 0 0 4 0;...
0 2 0 0 2 0;...
0 0 0 0 0 0];
% Creating C by using index
idx = B ~= 0;
C = A;
C(idx) = B(idx);

1 件のコメント

Ted Baker
Ted Baker 2019 年 12 月 4 日
Thank you very much for introducing me to the technique, along with a very clear example. It now works perfectly in my application. :)

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

その他の回答 (1 件)

JESUS DAVID ARIZA ROYETH
JESUS DAVID ARIZA ROYETH 2019 年 12 月 4 日

1 投票

C=A;
C(B~=0)=B(B~=0)
also could help you:
C=max(A,B)

カテゴリ

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

製品

タグ

質問済み:

2019 年 12 月 4 日

コメント済み:

2019 年 12 月 4 日

Community Treasure Hunt

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

Start Hunting!

Translated by