Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: Alternative solution for NAN
Replies: 11   Last Post: Feb 27, 2013 5:44 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Torsten

Posts: 1,450
Registered: 11/8/10
Re: Alternative solution for NAN
Posted: Feb 27, 2013 7:27 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"Carl S." wrote in message <kgktg9$rhc$1@newscl01ah.mathworks.com>...
> "Carl S." wrote in message <kgkpep$h9u$1@newscl01ah.mathworks.com>...
> > "Torsten" wrote in message <kgko7b$e4d$1@newscl01ah.mathworks.com>...
> > > "Carl S." wrote in message <kgkmon$aeo$1@newscl01ah.mathworks.com>...
> > > > "Torsten" wrote in message <kgklbh$6ph$1@newscl01ah.mathworks.com>...
> > > > > "Carl S." wrote in message <kgki2g$rie$1@newscl01ah.mathworks.com>...
> > > > > > The following code gives NAN (Not a Number) values
> > > > > > [U,D]=eig(N);
> > > > > >
> > > > > > To solve this problem, I wrote that
> > > > > > while(det(N) == 0)
> > > > > > N=(1e-10.*randi(1,size(N)))*eye(size(N));
> > > > > > end
> > > > > >
> > > > > > But, the loop does not stop

> > > > >
> > > > > Your matrix N within the loop always has determinant (1e-10)^(size(N))
> > > > > which may become very small if N is large.
> > > > >
> > > > > :( Are there any alternative solution instead of this loop to solve the NAN problem ?
> > > > >
> > > > > Depends on the original matrix N.
> > > > >
> > > > > Best wishes
> > > > > Torsten.

> > > >
> > > > Dear Torsten,
> > > > The matrix N has standard deviation values of grayscale images. So, it changes for each image. How to solve the NAN problem in this case ?

> > >
>
> I have tried this,
> u=1e-10;
> while(det(N) == 0)
> N=u.*eye(size(N));
> u=u*100;
> end
>
> Now, it works without giving NAN value. But, I am not sure that this algorithm correct results. Do you think that this is meaningful or I can get unexpected results ? Any suggestions ?


The matrix N you get after the while loop is a scalar multiple of the identity matrix and in general has nothing in common with your original matrix N.
You will have to find out why eig produces NaN values for your original matrix N.
Are you sure all elements of N are finite ?

Best wishes
Torsten.



Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.