
奇异值分解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不会对输入的数据进行标准化处理。

数据处理·机器学习·可视化
行业资讯·学习资料

长按关注不迷路
