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

 Akzeptierte Antwort

James Tursa
James Tursa am 16 Mai 2017

1 Stimme

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

5 Kommentare

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 am 17 Mai 2017
thank you!
min wong
min wong am 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 am 18 Mai 2017
Thanks !!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Paulo Neto
Paulo Neto am 28 Nov. 2018

0 Stimmen

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

3 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Paulo Neto
Paulo Neto am 28 Nov. 2018

0 Stimmen

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