柏莱 发表于 2007-9-17 21:10

(求助)时间序列的平均周期如何计算?

时间序列的平均周期如何计算?我是菜鸟,还请高手赐教!!!谢谢了

sssssxxxxx921 发表于 2007-9-18 10:17

其实就是把功率谱图的横坐标f做个1./f变换 然后画图出来对应最高峰位置的横坐标就是 周期P 了就可以了
load sunspot.dat
year = sunspot(:,1);
wolfer = sunspot(:,2);
plot(year,wolfer)
title('Sunspot Data')
Y = fft(wolfer);
N = length(Y);
Y(1) = [];
power = abs(Y(1:N/2)).^2;
nyquist = 1/2;
freq = (1:N/2)/(N/2)*nyquist;
plot(freq,power), grid on
xlabel('cycles/year')
title('Periodogram')
period = 1./freq;
plot(period,power), axis(), grid on
ylabel('Power')
xlabel('Period(Years/Cycle)')

柏莱 发表于 2007-9-18 10:45

谢谢,让我好好看看这个程序!!!不过好像用最小数据量法求最大lyapunov时,周期P的影响不大,如果在不确定周期P的情况下,是不是可以用P=1来进行计算?(陆振波博士论文中的观点)

octopussheng 发表于 2007-9-18 11:23

回复 #3 柏莱 的帖子

这个和你要求解的数据有关,你可以先试算一下,譬如取P=1,2,3,看看结果相差大不大!

如果差别很大,那肯定不能直接设置P=1了!

sssssxxxxx921 发表于 2007-9-18 15:46

回复 #3 柏莱 的帖子

不要听信别人自己试过才知道的

柏莱 发表于 2007-9-19 14:35

也是的,陆博士在数据选取上选的数据比较多(大概几千个数),但我的数据大概也就几十到几百个,应该会有不同!谢谢大家的提醒!

柏莱 发表于 2007-9-19 15:37

原帖由 sssssxxxxx921 于 2007-9-18 10:17 发表 http://www.chinavib.com/forum/images/common/back.gif
其实就是把功率谱图的横坐标f做个1./f变换 然后画图出来对应最高峰位置的横坐标就是 周期P 了就可以了

你给的这个程序,我有点地方不太明白意思,是不是我照葫芦画瓢就可以呢?还是有些参数需要根据实际情况而改变呢?

柏莱 发表于 2007-9-19 16:12

还想问一个问题,如果求出的P是不是一个整数,那是应该向0取整呢,还是应该向正无穷取整?

sssssxxxxx921 发表于 2007-9-19 16:16

什么叫向正无穷取整啊?
P四舍五入,取整法最多相差1   对结果没有影响的

柏莱 发表于 2007-9-20 15:39

你给的这个程序,我有点地方不太明白意思,是不是我照葫芦画瓢就可以呢?还是有些参数需要根据实际情况而改变呢?

octopussheng 发表于 2007-9-20 16:29

这个程序你可以参考一下matlab中fft帮助部分的内容,应该可以找到你需要的解释的~

JulianChin 发表于 2007-10-19 14:28

这种方法求出的平均频率只是真实频率的分数倍数吧,把真实频率看作1,求出的平均频率可能是零点几,这是什么道理?

octopussheng 发表于 2007-10-19 20:43

回复 #12 JulianChin 的帖子

你这么一说还真是有问题啊,过几天有时间了再把它搞清楚!你要是有结果也请一起分享哦!

JulianChin 发表于 2007-10-19 22:08

回复 #13 octopussheng 的帖子

如果求的是真实周期的话,想想看,一个中心频率100k的信号,求出的p几乎等于0,那不如干脆设成1算了

我看原意还是求分频吧

octopussheng 发表于 2007-10-20 21:33

回复 #14 JulianChin 的帖子

昨晚又翻书了,发现用分频更解释的通:@L :@L

我再学习学习!
页: [1] 2
查看完整版本: (求助)时间序列的平均周期如何计算?