频谱分析根本思路是将时域的信号转变为频域的信号。转换的方法就是离散傅里叶变换,其计算方法是

X(ejω)=∑n=−∞∞x(n)e−jωn

X(e^{j\omega})=\sum_{n=-\infty}^{\infty}x(n)e^{-j\omega n}
简单的说就是将时域上的信号 x(n)x(n)转换到频域 下的信号 X(ejω)X(e^{j\omega}). X(ejω)X(e^{j\omega})是一个随角频率变化的复数,并且 ω\omega分布在 (−∞,+∞)(-\infty,+\infty)之间。实际上 X(ejω)X(e^{j\omega})在实际应用的一个通常的叫法是频谱,即一系列随频率而变化的值,反映的是信号的频域分布和变化规律。
当然,既然有傅里叶变换也就有反变换,变换公式为

x(n)=12π∫π−πX(ejω)ejωdω

x(n)=\frac{1}{2\pi}\int_{-\pi}^{\pi}X(e^{j\omega})e^{j\omega}d\omega
所以最基础的频谱分析就是傅里叶变化,在matlab中的实现方法是

N=length(ydata);%数据长度
%spectrum analysis
fs=100;%设定采样频率?
i=0:N-1;
t=i/fs;
%f=100;%设定正弦信号频率?%生成正弦信号?
y=fft(ydata,N);%进行fft变换?
mag=abs(y);%求幅值?
f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M;??
power=mag.^2;
figure
semilogx(f,power);

程序中的ydata就是你的时域变化的信号(一列数据),需要设定的就是采样频率(为了计算角频率)。程序中,mag代表的就是幅值,若要求相位,可以使用angle函数。power是幅值的平方,也就是功率。这就是最简单的频谱分析方法。对于一列较为杂乱的实验数据而言,直接的频谱分析往往得到的结果不理想,主要表现在主要频率(低频)的幅值差别不明显,频率宽频分布。不易找到主要低频频率。所以可以采用其它频谱方法。
当然实际频谱分析还有加窗法,还有最大熵法等等,而matlab则提供了多种频谱分析的函数,包括pburg,pmusic,pyulear(最大熵法),pwelch,periodogram(周期图法)等等,具体用法简单介绍如下
周期图法periodogram

fs=100;%采样频率
nfft = 1024;%采样点个数
window=boxcar(length(ydata));%矩阵窗
%window1=hamming(100); %海明窗
[Pxx,ff]=periodogram(ydata,window,nfft,fs);
figure(4)
semilogx(ff,10*log10(Pxx));
xlabel('f(Hz)');ylabel('功率');
title('功率谱图-周期图法');
axis tight

加窗的方法与窗的类型以及大小有关,有矩形窗、海明窗,区别在于分布形式不同,加窗的大小也会影响频谱分析的结果,加窗就是使得信号在短时内更接近中心点变化的结果。实际函数的参数有很多建议参考matlab的help文档。

最大熵法是我个人用的比较多的一种频谱分析的方法,函数形式也比较简单,只需要设计采样频率以及DFT离散点的个数,其中第二个参数是自回归模型的阶数,在本程序中设为12;

figure
nfft=1024;
fs = 100;
[Pxx,F]=pyulear(ydata,12,length(ydata),fs);
plot(F,10*log10(Pxx))
xlabel('Frequency (Hz)');ylabel('Power Spectrum (dB)');
set(gca,'ytick',[],'yticklabel',[]);
axis tight;

其它的频谱分析函数都大同小异,建议参考matlab的help文档,这是最好的学习matlab的方式。频谱分析有助于得到单一频率下动态变化信息,有助于对问题的理解,从频域的角度对问题重新认识,不失为一种好的方法。

matlab 频谱分析方法总结相关推荐

  1. matlab频谱分析详解

    频谱分析是一种用于分析信号频率特征的方法,常用于信号处理.音乐分析.谐波产生等领域.MATLAB是一种功能强大的数字信号处理软件,提供了许多用于频谱分析的函数和工具箱. 本文将介绍如何使用MATLAB ...

  2. MATLAB作图方法与技巧(二)

    作为MATLAB作图方法与技巧(一)的补充 1.绘制二维散点图 ① scatter函数 scatter(x,y,s,c)函数绘制向量x和y的散点图,其中s代表点的大小,c代表点的形状,s和c缺省时为默 ...

  3. PCA原理分析和Matlab实现方法(三)

    PCA主成分分析原理分析和Matlab实现方法(三) [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/68487833   ...

  4. MATLAB 数据分析方法(第2版)1.2 MATLAB基础概述

    1.2 MATLAB基础概述 1.2.1 MATLAB的影响 MATLAB源于Matrix Laboratory,即矩阵实验室,是由美国Mathworks公司发布的主要面对科学计算.数据可视化.系统仿 ...

  5. 非线性规划MATLAB求解原理,专题六--非线性规划介绍及其Matlab求解方法.ppt

    迭代法一般步骤 注意:数值求解最优化问题的计算效率取决于确定搜索方向P (k)和步长 的效率. Matlab求解方法简介 Step3: 利用(3)式或其它一维搜索的方法求 计算 然后令k:=k+1, ...

  6. matlab画图命令fplot,matlab绘图方法fplot

    Matlab 中 plot. fplot .ezplot 用法与区别函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的.也就是 说,使用 plot 函数之前,必须..... ...

  7. BP神经网络通俗教程(matlab实现方法)

    BP神经网络通俗教程(matlab实现方法) BP神经网络是什么 BP(Back-propagation,反向传播)神经网络是最传统的神经网络.当下的各种神经网络的模型都可以看做是BP神经网络的变种( ...

  8. 火焰特性识别的Matlab实现方法

    火焰特性识别的Matlab实现方法 摘 要:图像型火灾探测技术较传统的粒子.烟雾.光电等传感器探测技术,具有信息量丰富.实时性 好等优点,是火灾防治技术领域的研究重点.通过硬件滤光的方式来滤除监控现场 ...

  9. tdms用matlab打开,TDMS文件及其Matlab读取方法.pdf

    TDMS文件及其Matlab读取方法 10 4 Vol. 10 No. 4 第 卷第 期 兰州石化职业技术学院学报 2010 12 Journal of Lanzhou Petrochemical C ...

最新文章

  1. iPhone开源系列:iDev Recipes
  2. CSS基础教程(企业内部培训)
  3. 值得阅读的C语言开源项目代码
  4. mysql b-a全局索引_MySQL中B+树索引的使用
  5. 每天一道LeetCode-----计算给定范围内所有数的与运算结果
  6. 2019年9月中国编程语言排行榜,C#排第三
  7. 类欧几里得算法详细推导过程(附带模板)
  8. php实战搭建博客,yii2项目实战-博客管理平台的搭建
  9. python夹角余弦雷达图_P19 从三角形夹角计算看math模块
  10. windows端口号速查表
  11. 高斯滤波详解 python实现高斯滤波
  12. SQL Server 2016安装教程
  13. Bootstrap 导航/滑动门(nav)
  14. Spring Cloud - 熔断(Hystrix)
  15. UltraLAB台式图形工作站(并行计算高效王~高性能计算工作站EX620i介绍)
  16. 小鸟壁纸 删除 卸载 流氓 鲁大师 360 软件 弹窗 后台
  17. 计算机个人市场调查实验报告,市场调查实验报告(一).doc
  18. 抖音 快手 皮皮虾 短视频一次解析
  19. 关于数学计算机手抄报简单的,关于简单的数学手抄报图片大全
  20. tableau中LOD:fixed、include、exclude 区别

热门文章

  1. 哈利波特与魔法石[AHOI2002]
  2. 基于百度地图的电子围栏设置工具
  3. Git学习笔记(集中式版本控制工具与分布式版本控制工具)
  4. 函数声明时 要不要 加 extern
  5. 三八妇女节快乐----IT女神活动随笔
  6. vue 中 Element-UI 表单验证的几种方法
  7. 在java中石头剪刀布的代码,JAVA石头剪刀布-猜拳 源代码
  8. jQuery 特效网址(特效大全)
  9. 【MDM ‘19】Learned Index for Spatial Queries
  10. python正则判断_python正则表达式