主要内容

使用自相关发现周期性

测量的不确定性和噪声有时使得很难发现信号中的振荡行为,即使这种行为是预期的。

周期信号的自相关序列与信号本身具有相同的循环特性。因此,自相关可以帮助验证周期的存在并确定它们的持续时间。

考虑一组由办公大楼内的温度计收集的温度数据。该设备每半小时读数一次,持续四个月。加载数据并绘制它。减去平均值以集中于温度波动。将温度转换为摄氏度。以天为单位计算时间。因此,采样率为2次测量/小时× 24小时/天= 48次测量/天。

负载officetemptempC = (temp-32)*5/9;tempnorm = tempC-mean(tempC);Fs = 2*24;T = (0:length(tempnorm) - 1)/fs;情节(t, tempnorm)包含(的时间(天)) ylabel ('温度({}^\circC)')轴

图中包含一个轴对象。axis对象包含一个line类型的对象。

温度似乎确实在振荡,但周期的长度不容易读出。

计算温度的自相关性,使其在零滞后时是统一的。将正负延迟限制在三周以内。注意信号的双重周期性。

[autocor,lag] = xcorr(tempnorm,3*7*fs,多项式系数的);情节(滞后/ fs, autocor)包含(“滞后(天)”) ylabel (自相关的)轴([-21 21 -0.4 1.1])

图中包含一个轴对象。axis对象包含一个line类型的对象。

通过找到峰值位置并确定它们之间的平均时间差来确定短期和长期。

要找到长周期,限制findpeaks寻找间隔超过短周期且最低高度为0.3的峰值。

[pksh,lcsh] = findpeaks(autocor);Short = mean(diff(lcsh))/fs
短= 1.0021
[pklg,lclg] = findpeaks(autocor,...“MinPeakDistance”装天花板(短)* fs,“MinPeakheight”, 0.3);Long = mean(diff(lclg))/fs
Long = 6.9896
持有PKS = plot(lag (lcsh)/fs,pksh,”或“...滞后(lclg) / fs, pklg + 0.05,“vk”);持有传奇(pks [repmat (”时期,“, [2]) num2str((长、短),0)])轴(21 -0.4 - 1.1 [-21])

图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象表示Period: 1, Period: 7。

从一个非常好的近似来看,自相关性每天和每周都在振荡。这是意料之中的,因为当人们工作时,大楼里的温度会更高,而在晚上和周末则会更低。

另请参阅

|

相关的话题