# eofunc

From: Takeshi Enomoto <eno_at_nyahnyahspammersnyahnyah>
Date: Wed, 21 Feb 2007 20:27:56 +0900

Hello,

I have a problem with the amplitude
of the eigenvalues returned by eofunc().

So looked at a simple example and am trying to confirm
eigenvalue = (singular value)**2/N
using svd_lapack() and eofunc().

The factor pertains to the calculation of covariance.
How does eofunc() calculates the covariance?

BTW, In Prof Hartmann's example using MATLAB
(I tried it with octave),
eigenvalue = (singular value)**2
and the sample size is gone somewhere.

Takeshi

-----
; Prof. D.L. Hartmann http://www.atmos.washington.edu/~dennis/
; ATM 552 Notes Chapter 4
; SVD and EOF MATLAB example

begin
nc = 4; number of columns
nr = 2; number of rows

; octave: [2 4 -6 8; 1 2 -3 4] [row 1; row2] but column-major
internally as Fortran
; NCL: (/(/row 1; row 2/)/) row-major as C

a = (/(/2.,4.,-6.,8./),(/1.,2.,-3.,4./)/)
printVarSummary(a)
atr = transpose(a)
printVarSummary(atr)

; svd_lapack() expects input transposed manually

print("### SVD ###")
write_matrix(atr,nc+"F8.4",False)
u = new((/nr,nr/),float)
v = new((/nc,nc/),float)
s = svd_lapack(atr, "S", "S", 0, u, v)
write_matrix(transpose(u),nr+"F8.4",False)
print(s)
write_matrix(v,nc+"F8.4",False)

print("### EOF ###")
; c = a # atr
; write_matrix(c,nc+"F8.4",False)

eof = eofunc(a,1,False)

print(eof_at_eval)
print(eof_at_pcvar)
print(eof_at_matrix)
print(eof_at_method)

write_matrix(eof,nr+"F8.4",False)
end

_______________________________________________
ncl-talk mailing list
ncl-talk_at_ucar.edu
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Wed Feb 21 2007 - 04:27:56 MST

This archive was generated by hypermail 2.2.0 : Thu Feb 22 2007 - 14:54:01 MST