在数据中查找峰值

使用 findpeaks 求出一组数据中局部最大值的值和位置。

文件 spots_num.mat 包含从 1749 年到 2012 年每年观测到的太阳黑子的平均数量。这些数据可以从美国国家航空航天局获得。

求出最大值及其出现的年份。将它们与数据一起绘制出来。

load('spots_num.mat')

[pks,locs] = findpeaks(avSpots);

plot(year,avSpots,year(locs),pks,'or')

xlabel('Year')

ylabel('Number')

axis tight

一些峰值彼此非常接近。有些峰值不会周期性重复出现。每 50 年大约有五个这样的峰值。

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

[pks,locs] = findpeaks(avSpots,'MinPeakDistance',6);

plot(year,avSpots,year(locs),pks,'or')

xlabel('Year')

ylabel('Number')

title('Sunspots')

axis tight

legend('Data','peaks','Location','NorthWest')

cycles = diff(locs);

meanCycle = mean(cycles)

meanCycle = 10.8696

众所周知,太阳活动周期大约为 11 年。我们使用傅里叶变换来检验这一周期。减去信号的均值以重点关注其波动。采样率以年为单位。使用从零到 Nyquist 频率的频率。

Fs = 1;

Nf = 512;

df = Fs/Nf;

f = 0:df:Fs/2-df;

trSpots = fftshift(fft(avSpots-mean(avSpots),Nf));

dBspots = 20*log10(abs(trSpots(Nf/2+1:Nf)));

yaxis = [20 85];

plot(f,dBspots,1./[meanCycle meanCycle],yaxis)

xlabel('Frequency (year^{-1})')

ylabel('| FFT | (dB)')

axis([0 1/2 yaxis])

text(1/meanCycle + .02,25,['<== 1/' num2str(meanCycle)])

傅里叶变换确实在预期频率处出现峰值,证实了 11 年的估计值是准确的。您还可以通过定位傅里叶变换的最高峰值来求得周期。

[pk,MaxFreq] = findpeaks(dBspots,'NPeaks',1,'SortStr','descend');

Period = 1/f(MaxFreq)

Period = 10.8936

hold on

plot(f(MaxFreq),pk,'or')

hold off

legend('Fourier transform','1/meanCycle','1/Period')

这两个估计值非常吻合。

另请参阅

相关主题

matlab 峰值位置,在数据中查找峰值 - MATLAB Simulink - MathWorks 中国相关推荐

  1. matlab中s查找数据,在数据中查找信号 - MATLAB Simulink - MathWorks 中国

    查找精确匹配 当您要找到信号在数值上完全一致的匹配项时,您可以使用 strfind 来执行匹配. 例如,如果我们有如下数据向量: data = [1 4 3 2 55 2 3 1 5 2 55 2 3 ...

  2. 如何用matlab找出一组离散数据中的峰值

    如何用matlab找出一组离散数据中的峰值 对于一组离散数据,我们经常需要找出其中的峰值,如下一组离散数据: x = [1 2 3 4 3 2 1 5 8 9 17 12 11 5 3 2 1 7 1 ...

  3. 使用Matlab提取ADC采样数据中的噪声

    正常波形与噪声波形的区别 正常方波信号的特征:一个周期内的数据按时间单调变化,则仅有2种情况:① 数据在上升或下降边沿时,其两边的数据则是一边大一边小(如下图中C和D点):② 数据处于平稳时,则两边大 ...

  4. 腾讯位置大数据中区域热力图数据的数据解析

    腾讯位置大数据中提供了位置流量趋势数据.区域热力图数据.人口迁徙数据.今天就来讲讲区域热力图,如何获取数据,以及对数据的解读 一.数据的获取 F12打开开发者工具,点击NetWork,如上图所示则为当 ...

  5. 诚之和:什么是异常值?如何在统计数据中查找异常值

    异常值是数据集的重要组成部分.它们可以保存有关您数据的有用信息.异常值可以为您正在研究的数据提供有用的见解,并且它们可以对统计结果产生影响.这可能会帮助您发现不一致之处并检测统计过程中的任何错误.因此 ...

  6. 实战matlab之文件与数据接口技术,实战MATLAB之文件与数据接口技术

    1.1文件 1.2数据接口 1.3MATLAB文件和数据接口操作思路 1.4MATLAB支持的数据文件格式 1.5MATLAB支持的数据接口类型 第2章MATLAB程序设计基础 2.1MATLAB环境 ...

  7. matlab读Excel表格数据画图,matlab读Excel表格数据画图-如何利用matlab根据excel表格里面的数据画图...

    用matlab读取excel数据并把对应的数据分别画出曲线图 1.第我们首先需要找到需要导excel表格,这里表格需要是office,其它入有问题,我们可以使用电脑自带的2003版本office 2. ...

  8. Matlab编程技巧:MBD中常用的Matlab函数

    在MBD(基于模型开发)中,需要掌握一些常用的函数.这些函数经常用于搭建集成环境.生成手写代码.工具链开发等.恰当地使用函数编写Matlab脚本可以提高MBD工作的自动化程度,提高工作效率. 本文会分 ...

  9. matlab仿真采样时间,系统中的采样时间 - MATLAB Simulink - MathWorks 中国

    纯离散系统 纯离散系统完全由离散模块组成,可以使用固定步长或可变步长求解器进行建模.要对离散系统进行仿真,需要仿真器在每个采样时间点执行一个仿真步.对于多速率离散系统 - Simulink® 以不同速 ...

  10. matlab如何创建table,创建和使用表 - MATLAB Simulink - MathWorks 中国

    创建并查看表 根据工作区变量创建一个表并查看它.或者,使用 导入工具 或 readtable 功能根据电子表格或文本文件创建表.使用这些函数从文件导入数据时,每个列都会变为表变量. 将 100 位患者 ...

最新文章

  1. python视频教学视频哪个好-Python入门视频哪个好?
  2. 前端学HTTP之字符集
  3. P2634 [国家集训队]聪聪可可(树上启发式合并)
  4. Qt应用程序发布:Qt应用程序添加版本版权生产商等信息
  5. 回溯专题leetcode
  6. TiFlash:并非另一个 T + 1 列存数据库
  7. python多线程_thread使用锁
  8. python webbrowser_Python中webbrowser的用法
  9. jmeter安装配置
  10. Apache Rewrite实现URL的301跳转和域名跳转
  11. 总感觉这个访问量过于均匀……
  12. Windows C盘清理指北
  13. 线性代数复盘 | 同济大学工程数学第六版第二章思维导图笔记——矩阵及其运算(复习专用)
  14. 用Android studio搭建沃商店SDK任意支付的配置
  15. 面试必备(背)-Linux八股文系列!
  16. html视频长宽代码,html插入视频,html添加视频的代码
  17. 用于机器学习的数据库--UCI数据库
  18. Lambda表达式与函数式接口详解
  19. ARM + RISC-V双核锁步DCLS Lockstep技术总结
  20. 一个tesseract ocr box 文件查看toy,python

热门文章

  1. 利用 FFT 模拟菲涅尔衍射积分
  2. Invest模型 ——生境质量计算
  3. 【JVM】Java命令以及JVM调优
  4. InfoGAN学习笔记
  5. 去A片马赛克,开发者被抓了。
  6. Fail to convert to internal representation
  7. DSP CCS软件仿真
  8. dnf服务器字幕乱码win10系统,Windows10下输入法设置 教你避免DNF卡顿
  9. 什么是南大核心、北大核心、科技核心、人文核心、省级期刊和国家级期刊
  10. windows下namp的基本操作命令