How to plus two nan matrix

1 Ansicht (letzte 30 Tage)
min wong
min wong am 16 Mai 2017
Kommentiert: James Tursa am 28 Nov. 2018
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
c = a + b;
c(isnan(c)) = a(isnan(c));
c(isnan(c)) = b(isnan(c));
  5 Kommentare
James Tursa
James Tursa am 17 Mai 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 am 18 Mai 2017
Thanks !!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Paulo Neto
Paulo Neto am 28 Nov. 2018
How I can do this: c = (a + b)/b
Regards
  3 Kommentare
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
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