How to plus two nan matrix

If my two matrix are
a=3*3,b=3*3,c=3*3
a=[1 2 3,4 5 nan,7 nan 9]
b=[nan 3 3,4 5 6,nan 8 9]
c=a+b
Is that possible that c=[1 5 6,8 10 6,7 8 18]
How to calculate?
Thanks

 Respuesta aceptada

James Tursa
James Tursa el 16 de Mayo de 2017

1 voto

c = a + b;
c(isnan(c)) = a(isnan(c));
c(isnan(c)) = b(isnan(c));

5 comentarios

Cam Salzberger
Cam Salzberger el 16 de Mayo de 2017
That should do it. Could also just pre-process "a" and "b" with:
a(isnan(a)) = 0;
b(isnan(b)) = 0;
c = a+b;
but then you'll end up with 0 in places that both "a" and "b" are NaN. I like James' answer better.
min wong
min wong el 17 de Mayo de 2017
thank you!
min wong
min wong el 17 de Mayo de 2017
But if want to average the matrix
Hoe to do it?
like c=(a+b)/2;
James Tursa
James Tursa el 17 de Mayo de 2017
Depending on what you want to have happen to the "NaN" spots, I am guessing you will want either
c = (a + b)/2;
c(isnan(c)) = a(isnan(c));
c(isnan(c)) = b(isnan(c));
or
c = (a + b)/2;
c(isnan(c)) = a(isnan(c))/2;
c(isnan(c)) = b(isnan(c))/2;
min wong
min wong el 18 de Mayo de 2017
Thanks !!

Iniciar sesión para comentar.

Más respuestas (2)

Paulo Neto
Paulo Neto el 28 de Nov. de 2018

0 votos

How I can do this: c = (a + b)/b
Regards

3 comentarios

James Tursa
James Tursa el 28 de Nov. de 2018
Did you mean element-wise division? c = (a+b)./b
Paulo Neto
Paulo Neto el 28 de Nov. de 2018
I'm considering a and b as arrays:
a=3*3,b=3*3,c=3*3
a=[1 2 3,4 5 nan,7 nan 9]
b=[nan 3 3,4 5 6,nan 8 9]
To calculate c = a + b, I'm using your routine:
c(isnan(c)) = a(isnan(c));
c(isnan(c)) = b(isnan(c));
and results in c=[1 5 6,8 10 6,7 8 18]
But I need to calculate: (a+b)./b, can I use the same method?
James Tursa
James Tursa el 28 de Nov. de 2018
What would you want the individual result to be if "a" is NaN, and if "b" is NaN?

Iniciar sesión para comentar.

Paulo Neto
Paulo Neto el 28 de Nov. de 2018

0 votos

I'm considering a and b as arrays:
a=3*3,b=3*3,c=3*3
a=[1 2 3,4 5 nan,7 nan 9]
b=[nan 3 3,4 5 6,nan 8 9]
To calculate c = a + b, I'm using your routine:
c(isnan(c)) = a(isnan(c));
c(isnan(c)) = b(isnan(c));
and results in c=[1 5 6,8 10 6,7 8 18]
But I need to calculate: (a+b)./b, can I use the same method?

Categorías

Etiquetas

Preguntada:

el 16 de Mayo de 2017

Comentada:

el 28 de Nov. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by