爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11102|回复: 6

NCL里的功率谱函数结果与Fortran结果不同

[复制链接]
发表于 2015-4-6 13:12:29 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 niuda 于 2015-4-6 13:13 编辑

相同的一个时间序列,用NCL里的功率谱函数(specx_anal 和 specx_ci)画出图与用Fortran+GrADS画出的图差异较大,请教有没有用过NCL里的功率谱函数来分析周期的,是不是有什么问题,谢谢
密码修改失败请联系微信:mofangbao
发表于 2020-9-25 18:13:37 | 显示全部楼层

i

本帖最后由 小懒C 于 2020-10-5 22:52 编辑

我找到了ncl里面具体specx_anal是咋做的,以及它的源代码,在shea_util.ncl这个函数集里面
https://www.ncl.ucar.edu/Support/talk_archives/all/1526.html

应该不是单位的问题,而是其物理意义的问题根据ncl代码来看,ncl计算顺序为
1.tapper函数  
2.fft并计算对应频率的幅值
3.平滑
4.将整个谱统一到方差大小,第四步如下:
  1.    df         = 1./N
  2.    total_area = (spcx(0) + spcx(N/2-1))*(df/2) + sum(spcx(1:N/2-2))*df
  3.    sclVar     = xVaro/total_area
  4.    spcx       = spcx*sclVar
复制代码
这是说ncl中功率谱(spcx(最后一行))与频率步长(1/N)的乘积之和为原数据方差(开始和最后两点×1/2N,这个理解可以对应于傅里叶级数里a0,可以参考其他matlab,ncl等自带fft程序的解释)
李建平教授的程序对功率谱(sl)求和即为原始数据的方差

密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

发表于 2015-4-6 13:45:50 | 显示全部楼层
首先你看看他们的算法有没差别
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-4-6 16:47:16 | 显示全部楼层
又是那隻貓 发表于 2015-4-6 13:45
首先你看看他们的算法有没差别

NCL里看不到具体的算法,但功率谱的算法应该没有什么创新基本都是一样的,但是同样的数据按照官网给的例子做出来的纵坐标值有好几千,而fortran则是小于1 的,而且曲线形态也不相同,感觉NCL里的功率谱函数好假啊
密码修改失败请联系微信:mofangbao
发表于 2018-5-21 19:52:53 | 显示全部楼层
一样一样,楼主解决了吗
密码修改失败请联系微信:mofangbao
发表于 2018-9-26 15:49:37 | 显示全部楼层
单位不一样的,我看文献纵坐标有的是小于1,在右边会写乘以10^4
密码修改失败请联系微信:mofangbao
发表于 2021-10-12 20:46:44 | 显示全部楼层
niuda 发表于 2015-4-6 16:47
NCL里看不到具体的算法,但功率谱的算法应该没有什么创新基本都是一样的,但是同样的数据按照官网给的例 ...

这个问题有解决吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表