使用自相关求周期性

测量不确定性和噪声有时会导致难以发现信号中的振荡行为,即使该震荡行为是预期存在的。

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

以由办公楼内温度计采集的一组温度数据为例。该设备每半小时读取一次读数,持续读取四个月。加载数据并对其绘图。减去均值以重点关注温度波动。将温度转换为摄氏度。测量时间以天为单位。因此,采样率为 2 次测量/小时 × 24 小时/天 = 48 次测量/天。

load officetemp

tempC = (temp-32)*5/9;

tempnorm = tempC-mean(tempC);

fs = 2*24;

t = (0:length(tempnorm) - 1)/fs;

plot(t,tempnorm)

xlabel('Time (days)')

ylabel('Temperature ( {}^\circC )')

axis tight

温度似乎确实有震荡特性,但周期的长度并不容易确定。

计算温度的自相关性(时滞为零时该值为 1)。将正时滞和负时滞限制为三周。请注意信号的双周期性。

[autocor,lags] = xcorr(tempnorm,3*7*fs,'coeff');

plot(lags/fs,autocor)

xlabel('Lag (days)')

ylabel('Autocorrelation')

axis([-21 21 -0.4 1.1])

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

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

[pksh,lcsh] = findpeaks(autocor);

short = mean(diff(lcsh))/fs

short = 1.0021

[pklg,lclg] = findpeaks(autocor, ...

'MinPeakDistance',ceil(short)*fs,'MinPeakheight',0.3);

long = mean(diff(lclg))/fs

long = 6.9896

hold on

pks = plot(lags(lcsh)/fs,pksh,'or', ...

lags(lclg)/fs,pklg+0.05,'vk');

hold off

legend(pks,[repmat('Period: ',[2 1]) num2str([short;long],0)])

axis([-21 21 -0.4 1.1])

自相关每天和每周都呈现振荡行为,而且非常近似。这是意料之中的,因为大楼内在人们工作时间温度较高,晚上和周末温度较低。

另请参阅

相关主题

matlab求自相关频率,使用自相关求周期性相关推荐

  1. matlab求基音频率,语音中提取基音频率matlab程序.doc

    语音中提取基音频率matlab程序 语音中提取基音频率matlab程序%%corr.m % correlation for pitch estimation% flag =1 from left to ...

  2. [MATLAB学习笔记]采用快速傅里叶变换求时间序列的周期项

    [MATLAB学习笔记]采用快速傅里叶变换求时间序列的周期项 1. 背景 现有长度为11年的5个时间序列,为某拟研究对象的5个参数.现计划先通过快速傅里叶变换求每个系数序列的显著周期项,再分别按照傅里 ...

  3. MATLAB常见矩阵运算函数,矩阵的转置transpose()、求行列式值det()、求矩阵的秩rank()、求矩阵的特征值eig()、求逆矩阵inv()

    MATLAB常见矩阵运算函数 1.转置 如矩阵A 转置后 2.求行列式的值det(A) 使用此函数必须保证A为方阵 3.求矩阵的秩 4.求方阵的特征值 5.求方阵的逆矩阵

  4. matlab(simulink)里怎么求一个波形的动态平均值

    matlab(simulink)里怎么求一个波形的动态平均值 搭建一个简单的模型 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔 ...

  5. jiegputo matlab转置,matlab实现用免疫克隆算法求二元函数的最优值(附源码)

    用免疫克隆算法求二元函数的最优值 求下面函数的最小值(最优解) ​ Goldstein-Price函数: ​ f1(x)=[1+(x1+x2+1)2(19-14x1+3x12-14x2+6x1x2+3 ...

  6. 【老生谈算法】matlab实现Kruskal避圈算法求最小生成树——Kruskal避圈算法

    基于MATLAB的Kruskal避圈算法求最小生成树 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]基于MATLAB的Kruskal避 ...

  7. 如何用matlab算导数曲线,excel 曲线求导_excel怎样对表格中数据进行求导

    怎样在两个EXCEL表中导数值 用VLOOKUP函数. 举例:看图片上的例子 =VLOOKUP(E2,A:B,2,0) 这个公式的含义是,E2就是你说的表1上的名称这个单元格,A:B就是2表中的两列, ...

  8. matlab优化问题约束不取等号6,matlab中fmincon函数中不含等号的边界值怎么设置?,matlab中的fmincon函数一直求不出为什么...

    导航:网站首页 > matlab中fmincon函数中不含等号的边界值怎么设置?,matlab中的fmincon函数一直求不出为什么 matlab中fmincon函数中不含等号的边界值怎么设置? ...

  9. matlab多项式多个值代入求值,[转载]Matlab 解惑之——多项式运算

    http://www.cublog.cn/u1/37798/showart_452797.html% matlab语言把多项式表达成一个行向量,该向量中的元素是按多项式 %降幂排列的. % f(x)= ...

最新文章

  1. 动态验证码制作(RandomCodeImage )
  2. MavenAnt使用
  3. GitLab 密码重设
  4. C#如何控制方法的执行时间,超时则强制退出方法执行
  5. DL之GAN:生成对抗网络GAN的简介、应用、经典案例之详细攻略
  6. python无法启动此程序因为计算机中丢失_python报错:无法启动此程序,因为计算机中丢失...
  7. 基于HTML5 的人脸识别活体认证
  8. mysql重装远程服务未_MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)...
  9. MySQL运算符,函数,索引,图形化管理工具
  10. 容器编排技术 -- Kubernetes 设计理念
  11. 【iOS】使用SQLite3的时候Swift3.、XCode8报错:Unsupported architecture - 'arm/arch.h'file not found - Could not
  12. Yahoo! Screwdriver:可扩展的持续集成工具
  13. 微信demo小游戏:飞机大战从无到有
  14. c语言函数求圆面积,C语言编写函数,计算圆面积.
  15. 如何讲好一个故事 - by锤子手机活动策划负责人草威
  16. 74HC573的使用方法
  17. PP实施经验分享(9)——SAP中Day’s supplyReceipt day’s supply及相关报表(可当物料短缺报表使用)
  18. Gradle 2.0 用户指南翻译——第五十章. 依赖管理
  19. pythonifelse简化_简化“if…elif..else”条件
  20. 华为内部存储转sd卡_华为手机内部存储软件怎么转到sd卡?

热门文章

  1. Win10跳过开机登录界面
  2. C语言动态开辟多维数组空间
  3. 好强的谷歌插件,不用写代码就能爬虫!
  4. 乐高收割机器人_学习乐高机器人编程,孩子到底收获了什么?
  5. 上楼梯(df和dp解法)
  6. 债券收益率预测模型_ARIMA模型在中国移动债券收益预测中的应用
  7. shiro中使用自定义filter后,anon不生效解决方案
  8. 翻斗式雨量传感器的材质分类和工作原理
  9. 什么样的鞋影响骨骼生长
  10. macOS Monterey 12.0.1 (21A559) 虚拟机 IOS 镜像