2013-03-25 8 views
3

У меня есть две матрицы:Заменить некоторые элементы матрицы с элементами другой матрицы [Matlab/октава]

A = [0,1,1;1,0,0;0,0,0] 
B = [3,0,0;0,3,3;4,4,4] 

И я хочу, чтобы заменить Alle 0-элементов в матрице А, с элементом, то есть на той же позиции в матрице B.

в приведенном выше примере результат матрица будет выглядеть следующим образом:

result = [3,1,1;1,3,3;4,4,4] 

есть функция MATLAB для этой цели, или я должен написать один на моем OW п?

С уважением

ответ

6

Это легко достигается с индексацией:

idx = A == 0; 
A(idx) = B(idx); 
+0

спасибо, что работает! –

4

решение Oneliner с использованием логической адресации:

 
A(A == 0) = B(A == 0);