主要内容

在数据中找到峰值

使用findpeaks在一组数据中查找局部最大值的值和位置。

该文件spots_num.mat包含了从1749年到2012年每年观测到的太阳黑子的平均数量。这些数据可以从NASA获得。

找出最大值和它们发生的年份。把它们和数据一起画出来。

负载(“spots_num.mat”) [pks,locs] = findpeaks(avSpots);情节(avSpots,年(loc),”或“)包含(“年”) ylabel (“数量”)轴

图中包含一个坐标轴。轴线包含2个线型对象。

有些山峰彼此非常接近。那些不是定期复发的。每50年大约有5个这样的峰值。

为了更好地估计周期持续时间,请使用findpeaks再次强调,但这一次将峰与峰之间的间隔限制在至少6年。计算最大值之间的平均间隔。

(pks, loc) = findpeaks (avSpots,“MinPeakDistance”6);情节(avSpots,年(loc),”或“)包含(“年”) ylabel (“数量”)标题(“太阳黑子”)轴传奇(“数据”“高峰”“位置”“西北”

图中包含一个坐标轴。标题为“太阳黑子”的轴包含两个线型物体。这些对象代表数据,峰值。

周期= diff (loc);meanCycle =意味着(周期)
meanCycle = 10.8696

众所周知,太阳活动大约每11年周期一次。用傅里叶变换来检验。去掉信号的平均值以集中注意其波动。回想一下,抽样率是以年为单位计算的。使用奈奎斯特频率以内的频率。

Fs = 1;Nf = 512;df = Fs / Nf;f = 0: df: Fs /第二代;trSpots = fftshift (fft (avSpots-mean (avSpots)、Nf));dBspots = 20 * log10 (abs (trSpots (Nf / 2 + 1: Nf)));Yaxis = [20 85];情节(f dBspots 1。/ (meanCycle meanCycle],桠溪)包含(的频率(年^ {1})) ylabel ('| FFT | (dB)')轴([0 1/2 yaxis])文本(1/meanCycle+.02,25[“< = = 1 /”num2str (meanCycle)))

图中包含一个坐标轴。轴包含三个对象的类型行,文本。

傅里叶变换确实在预期频率处达到峰值,证实了11年猜想。你也可以通过定位傅里叶变换的峰值来找到周期。

[pk,MaxFreq]=findpeaks(dBspots,“NPeaks”,1,“SortStr”“下”);时间= 1 / f (MaxFreq)
时间= 10.8936
持有情节(f (MaxFreq)、pk、”或“)举行传奇(傅里叶变换的“1 / meanCycle”“1 /时间”

图中包含一个坐标轴。轴包含4个对象的类型行,文本。这些对象代表傅里叶变换,1/周期。

这两个估计相当吻合。

另请参阅

|

相关话题