奇異值分解SVD(Singular?Value?Decomposition)是一種矩陣分解方法,在氣象領域中常用來分析兩個氣象場場之間的關系。
NCL的函數庫中與SVD相關的函數包括svd_lapack,svdcov,svdcov_sv,svdstd,svdstd_sv。
svd_lapack:用于計算一般矩形矩陣的奇異值分解。具體寫法為:
s = svd_lapack (a, "S" , "S", 0, u, v)
這里,a是一個(/nca,nra/)矩陣,兩個“S”為固定寫法,0表示輸出v時不轉置(1則表示轉置v),u和v分別為左、右奇異向量,u的長度和屬性都和a相同,而v的長度為(/nca,nca/),屬性也與a相同。
svdcov:對兩個場進行奇異值分解,并返回與這兩個場相關的左右同構和異構數組。具體寫法為:
svd_rv = svdcov(s,z,nsvd,homlft,hetlft,homrgt,hetrgt)
這里,s為(/ncols,ntime/)的氣象場,z為(/ncolz,ntime/),?二者都為float或者double。nsvd為計算的svd模態數。homlft,hetlft,homrgt,hetrgt分別為左同構場、左異構場、右同構場合右異構場。它們的屬性如下:
??homlft:(/nsvd,ncols/),typeof(s)
??hetlft:(/nsvd,ncols/),typeof(s)
??homrgt:((/nsvd,ncolz/),typeof(s)
??hetrgt:((/nsvd,ncolz/),typeof(s)
時間系數為:
ak = onedtond(svd_rv@ak,(/nsvd,ntime/))
bk = onedtond(svd_rv@bk,(/nsvd,ntime/))
??ak!0?=?"sv"
??ak!1?=?"time"
??bk!0?=?"sv"
??bk!1?=?"time"
svdcov_sv:該命令與svdcov的區別在于,它只返回兩個輸入數據集相關聯的左右奇異向量。
svdstd、svdstd_sv:它們與svdcov、svdcov_sv的區別在于,它們首先對輸入的數組進行了標準化處理,然后再進行SVD計算,而svdcov、svdcov_sv不會對輸入的數據進行標準化處理。

數據處理·機器學習·可視化
行業資訊·學習資料
長按關注不迷路