Search All of the Math Forum:

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

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

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

 Messages: [ Previous | Next ]
 Torsten Posts: 1,717 Registered: 11/8/10
Re: Alternative solution for NAN
Posted: Feb 27, 2013 7:27 AM

"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.

Date Subject Author
2/27/13 Tony Kittler
2/27/13 Torsten
2/27/13 Tony Kittler
2/27/13 Torsten
2/27/13 Tony Kittler
2/27/13 Tony Kittler
2/27/13 Tony Kittler
2/27/13 Torsten
2/27/13 Tony Kittler
2/27/13 Torsten
2/27/13 Steven Lord
2/27/13 Tony Kittler