comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Matrix rank
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Matrix rank [message #57620 is a reply to message #57537] Fri, 14 December 2007 10:06 Go to previous messageGo to previous message
Steve Eddins is currently offline  Steve Eddins
Messages: 9
Registered: July 2001
Junior Member
Vince Hradil wrote:
> On Dec 14, 9:42 am, Wox <nom...@hotmail.com> wrote:
>> On Fri, 14 Dec 2007 06:35:11 -0800 (PST), Vince Hradil
>>
>> <hrad...@yahoo.com> wrote:
>>> IDL can do SVD, can you get the rank from that? Look up SVDC in the
>>> docs.
>> I could do this, but maybe there's a better way?
>>
>> ; A: integers
>> ; B: floats
>> A = [[ 0,0,1], $
>> [ 0,1,0], $
>> [ 0,0,0]]
>> B = [0.25,0.5,1]
>>
>> ; Decompose A
>> SVDC, A, W, U, V
>> ; Solve A.X=B
>> X=SVSOL(U, W, V, B)
>>
>> ; Check
>> B2=A##X
>> ind=where(total(abs(A),1,/pres) ne 0)
>>
>> if array_equal(B[ind],B2[ind]) then print,X
>
> Well, w contains the singular values, the number of these that are non-
> zero will be the rank:
> idx = where(w ne 0, rank)
> print, rank
> 2

Since this is all in floating-point, it's appropriate to use a tolerance
instead of comparing exactly with 0. See, for example, the algorithm
used in the MATLAB rank function, which uses a tolerance based on the
size of the matrix and the maximum singular value. It's described here:

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/ra nk.html

I assume this is straightforward to express in IDL.

---
Steve Eddins
http://blogs.mathworks.com/steve/
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Off Topic Computer Post
Next Topic: Compiling error in Envi batch mode

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sun Oct 12 07:34:24 PDT 2025

Total time taken to generate the page: 1.52140 seconds