Re: Enc: svdstd_sv doubt

From: Dennis Shea <shea_at_nyahnyahspammersnyahnyah>
Date: Tue Dec 15 2009 - 07:33:05 MST

Perhaps you want a matrix multiply? Change

   expcoeficientsL = transsvLeft*transsst

to

   expcoeficientsL = transsvLeft#transsst

http://www.ncl.ucar.edu/Document/Manuals/Ref_Manual/NclExpressions.shtml
===
Also, it is better to write a acriptr than do this type of thing
interactively.

Good luck

leonardo.silva@cptec.inpe.br wrote:
> Hi all again
>
> This is the script that I'm using to calculate the expansion
> coeficients of the SVD calculus.
>
> I think that the things were ok until the matricies multiplying to
> construct the expasion coeficients. I type a printVarSummary below to
> show the dimension of the variables.
>
> If anyone could help me i will be grateful.
>
> ncl 0> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> ncl 1> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
> ncl 2> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
> ncl 3>
> ncl 4> nsvd = 1
> ncl 5>
> ncl 6> ntim = 358
> ncl 7> nlat = 28
> ncl 8> mlon = 47
> ncl 9>
> ncl 10> ncase = 2
> ncl 11> ncase1 = 1
> ncl 12>
> ncl 13> a = new ( (/ncase,nlat,mlon,ntim/) , float)
> ncl 14> a!0 = "case" ; name dimension
> ncl 15>
> ncl 16> diri = "/media/disk/echam5/u-v10m/"
> ncl 17>
> ncl 18> f = addfile (diri+"EH5_OM_20C_2_TSURF_DETRENDRUNMEAN.nc", "r")
> ncl 19> sst = f->tsurf(lat|:,lon|:,time|:)
> ncl 20>
> ncl 21> f0 = addfile (diri+"EH5_OM_20C_2_U10M_DETRENDRUNMEAN.nc", "r")
> ncl 22> a(0,:,:,:) = f0->u10(lat|:,lon|:,time|:)
> ncl 23>
> ncl 24> f1 = addfile (diri+"EH5_OM_20C_2_V10M_DETRENDRUNMEAN.nc", "r")
> ncl 25> a(1,:,:,:) = f1->v10(lat|:,lon|:,time|:)
> ncl 26>
> ncl 27> dimsst = dimsizes(sst)
> ncl 28> nlat = dimsst(0)
> ncl 29> mlon = dimsst(1)
> ncl 30> ntim = dimsst(2)
> ncl 31>
> ncl 32> dimV = dimsizes(a)
> ncl 33> ncas1 = dimV(0)
> ncl 34> nlat1 = dimV(1)
> ncl 35> mlon1 = dimV(2)
> ncl 36> ntim1 = dimV(3)
> ncl 37>
> ncl 38> if (ntim.ne.ntim1) then
> ncl 39> print("time dimensions must be the same: ntim="+ntim+"
> , ntim1="+ntim1)
> ncl 40> exit
> ncl 41> end if
> ncl 42>
> ncl 43> T = onedtond( ndtooned(sst), (/ntim ,nlat *mlon /))
> ncl 44> V = onedtond( ndtooned(a) , (/ntim1,nlat1*mlon1/))
> warning:onedtond : output dimension sizes have fewer elements than
> input, some data not
> copied
> ncl 45> T!0 = "time"
> ncl 46> T!1 = "space"
> ncl 47> V!0 = "time"
> ncl 48> V!1 = "space"
> ncl 49>
> ncl 50> TT = T(space|:,time|:)
> ncl 51> VV = V(space|:,time|:)
> ncl 52>
> ncl 53> svLeft = new((/nsvd,nlat *mlon /),float)
> ncl 54> svRight = new((/nsvd,nlat1*mlon1/),float)
> ncl 55>
> ncl 56> svdec = svdstd_sv(TT,VV,nsvd,svLeft,svRight)
> ncl 57>
> ncl 58> asciiwrite("svd.dat", svdec)
> ncl 59> asciiwrite("svLeft.dat", svLeft)
> ncl 60> asciiwrite("svRight.dat", svRight)
> ncl 61>
> ncl 62>
> ncl 63> Le = svLeft
> ncl 64> Le!0 = "time"
> ncl 65> Le!1 = "space"
> ncl 66> Left = Le(space|:,time|:)
> ncl 67>
> ncl 68> Ri = svRight
> ncl 69> Ri!0 = "time"
> ncl 70> Ri!1 = "space"
> ncl 71> Right = Ri(space|:,time|:)
> ncl 72>
> ncl 73> transsvLeft = transpose(Left)
> ncl 74> transsst = transpose(T)
> ncl 75>
> ncl 76> transsvRight = transpose(Right)
> ncl 77> transV = transpose(V)
> ncl 78>
> ncl 79> expcoeficientsL = transsvLeft*transsst
> fatal:Mul: Dimension size, for dimension number 0, of operands does
> not match, can't
> continue
>
> fatal:Execute: Error occurred at or near line 79
>
> ncl 80> expcoeficientsR = transsvRight*transV
> fatal:Mul: Dimension size, for dimension number 0, of operands does
> not match, can't
> continue
>
> fatal:Execute: Error occurred at or near line 80
>
> ncl 81>
> ncl 82> printVarSummary(transsvLeft)
>
>
> Variable: transsvLeft
> Type: float
> Total Size: 5264 bytes
> 1316 values
> Number of Dimensions: 2
> Dimensions and sizes: [time | 1] x [space | 1316]
> Coordinates:
> Number Of Attributes: 1
> _FillValue : -999
> ncl 83> printVarSummary(transsst)
>
>
> Variable: transsst
> Type: float
> Total Size: 1884512 bytes
> 471128 values
> Number of Dimensions: 2
> Dimensions and sizes: [space | 1316] x [time | 358]
> Coordinates:
> ncl 84> printVarSummary(transsvRight)
>
>
> Variable: transsvRight
> Type: float
> Total Size: 5264 bytes
> 1316 values
> Number of Dimensions: 2
> Dimensions and sizes: [time | 1] x [space | 1316]
> Coordinates:
> Number Of Attributes: 1
> _FillValue : -999
> ncl 85> printVarSummary(transV)
>
>
> Variable: transV
> Type: float
> Total Size: 1884512 bytes
> 471128 values
> Number of Dimensions: 2
> Dimensions and sizes: [space | 1316] x [time | 358]
> Coordinates:
> Number Of Attributes: 1
> _FillValue : -999
>
> ----- Mensagem encaminhada de leonardo.silva@cptec.inpe.br -----
> Data: Tue, 15 Dec 2009 10:20:22 -0200
> De: leonardo.silva@cptec.inpe.br
> Endereço para Resposta (Reply-To): leonardo.silva@cptec.inpe.br
> Assunto: svdstd_sv doubt
> Para: ncl-talk@ucar.edu
>
> Hi all
>
> I'm trying to aplly a SVD on a covariance matrix to create a spatial
> pattern and a time series which represent the Atlantic Meridional
> Mode. I'm using SST and 10m wind.
>
> Is the svdstd_sv function suitable for that? The calculus done by the
> SVD of that function was made over the covariance matrix of the two
> fields?
>
> Regards
>
> Leonardo
>
>
>
> ----- Final da mensagem encaminhada -----
>
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Tue Dec 15 07:34:29 2009

This archive was generated by hypermail 2.1.8 : Thu Dec 17 2009 - 17:15:52 MST