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
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
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