Ignoring NaN values when multiplying?

18 vues (au cours des 30 derniers jours)
Anna
Anna le 22 Avr 2011
I need to multiply a range of elements with eachother, and now i discovered that if any of the elements is entered as NaN, the entire product will be NaN.
winnerportfolios=zeros(11,127);
for column=1:127
y=2;
x=firstWinnerRow(1,column);
for col=2:3:375
for nrStocks=10:10:100
winnerportfolios(y,column)=prod(HPRsorted(x:x+nrStocks,col));
y=y+1;
end
end
end
I'd like to find a way to ignore the NaN values. The only way i come to think of would be to change the NaN-values to 1...
Thank you so much in advance!
oh and ignore the awful code, I've been working with matlab for only about a month :)
  1 commentaire
Federal Cearpa
Federal Cearpa le 6 Juin 2017
Turn all the Nan's into 1's.

Connectez-vous pour commenter.

Réponses (2)

Teja Muppirala
Teja Muppirala le 22 Avr 2011
"The only way i come to think of would be to change the NaN-values to 1"
That sounds like a reasonable idea to me:
X = [2 3 4; nan 2 7; 2 5 nan]
Y = X;
Y(isnan(Y)) = 1;
prod(Y)
  2 commentaires
Anna
Anna le 22 Avr 2011
Thank you for your help, I'd better do it like that then :)
Jerry Gregoire
Jerry Gregoire le 14 Avr 2015
Jonas had a good entry dealing with this issue and why you may want to consider the implications of doing this.

Connectez-vous pour commenter.


Steven Lord
Steven Lord le 6 Juin 2017
If you're using release R2017a or later, use the 'omitnan' flag in your call to prod.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by