在数据找到峰值
使用findpeaks
函数来找到价值观和一组数据的最大值的位置。
该文件spots_num
包含太阳黑子观测每年的平均数量从1749年到2012年。找到极大值和多年的发生。把它们连同数据。
负载(“spots_num”)(pks, loc) = findpeaks (avSpots);情节(avSpots,年(loc),“o”)包含(“年”)ylabel (“太阳黑子数”)轴紧
有些山峰非常接近对方。那些不定期复发。大约有5个这样的山峰每50年的时间。
要做一块更好的循环时间的估计,使用findpeaks
再一次,但这一次限制峰分离至少六年。计算顶点的平均时间间隔。
(pks, loc) = findpeaks (avSpots MinPeakDistance = 6);情节(avSpots,年(loc),“o”)包含(“年”)ylabel (“太阳黑子数”)轴紧传奇([“数据”“高峰”),位置=“西北”)
meanCycle =意味着(diff (loc))
meanCycle = 10.8696
众所周知,大约每11年太阳活动周期。检查使用傅里叶变换。去除信号的意思是专注于其波动。回想一下,采样率是衡量。使用频率奈奎斯特频率。
fs = 1;Nf = 512;df = fs / Nf;f = 0: df: fs /第二代;trSpots = fftshift (fft (avSpots-mean (avSpots)、Nf));dBspots = mag2db (abs (trSpots (Nf / 2 + 1: Nf)));情节(f, dBspots)参照线(= 1 / meanCycle,颜色“# 77 ac30”)包含(“频率(年^ {1})”)ylabel (“| FFT | (dB)”)ylim([85])文本(1 / meanCycle + 0.02, 25岁,“< = = 1 /”+ num2str (meanCycle))
傅里叶变换确实期望频率峰值,确认11年猜想。你也可以找到定位的最高峰时期的傅里叶变换。这两个估计一致很好。
[pk, MaxFreq] = findpeaks (dBspots NPeaks = 1, SortStr =“下”);时间= 1 / f (MaxFreq)
时间= 10.8936
持有在情节(f (MaxFreq)、pk、“o”)举行从传奇([“傅里叶变换”“1 / meanCycle”“1 /期”])