平均周期
平均周期的计算可以采用FFT方法。在matlab帮助中有一个太阳黑子的例子,现摘录如下:
load sunspot.dat %装载数据文件
year = sunspot(:,1); %读取年份信息
wolfer = sunspot(:,2); %读取黑子活动数据
plot(year,wolfer) %绘制原始数据图
title('Sunspot Data')
Y = fft(wolfer); %快速FFT变换
N = length(Y); %FFT变换后数据长度
Y(1) = []; %去掉Y的第一个数据,它是所有数据的和
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([0 40 0 2e7]), grid on %绘制年份-功率谱曲线
ylabel('Power')
xlabel('Period(Years/Cycle)')
[mp,index] = max(power); %求最高谱线所对应的年份下标
period(index) %由下标求出平均周期
|