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

 Réponse acceptée

James Tursa
James Tursa le 16 Mai 2017

1 vote

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

5 commentaires

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 le 17 Mai 2017
thank you!
min wong
min wong le 17 Mai 2017
But if want to average the matrix
Hoe to do it?
like c=(a+b)/2;
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 le 18 Mai 2017
Thanks !!

Connectez-vous pour commenter.

Plus de réponses (2)

Paulo Neto
Paulo Neto le 28 Nov 2018

0 votes

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

3 commentaires

James Tursa
James Tursa le 28 Nov 2018
Did you mean element-wise division? c = (a+b)./b
Paulo Neto
Paulo Neto le 28 Nov 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 le 28 Nov 2018
What would you want the individual result to be if "a" is NaN, and if "b" is NaN?

Connectez-vous pour commenter.

Paulo Neto
Paulo Neto le 28 Nov 2018

0 votes

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?

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by