如何利用matlab自带的函数及工具箱对信号进行频谱分析

主打一个用尽可能少的代码,达成我们的目的

频谱图

1.工具箱实现。想必电气小伙伴们一定(是吗?)了解powergui中的FFT analysis工具。注:R2022b(或其它较高版本)可以在命令行窗口用代码powerFFT power_fftscope代码调出APP。

不了解怎么使用的小伙伴,请点击上图左上角的Help按钮查看官方详细帮助文档,下面展示一下使用效果:

2.代码实现。小伙伴们是否有过想把FFT分析结果图导出但奈何没有导出选项的苦恼(截图??)。在较低matalb版本(比如2018版)中的FFT analysis工具箱中是有菜单栏的,里面就包括了导出功能,然而高版本(2022版)中就只剩光秃秃的一个Help选项。

看来只能用代码分析绘图了。

正确的matlab使用者应该具备 有,绝不自己写的“觉悟”,不然岂不是“辜负”了官方的“Less code. More research.”初衷

matlab的工具箱一般包括GUI(APP)相关函数两块,一般GUI(APP)是基于相关函数开发的。而FFT Analyzer APP的主体分析功能就是基于power_fftscope函数实现的。

 通过一个使用案例,介绍这个函数与APP使用的对应关系:

% 初始化操作
% 用函数默认设置对VIwave变量中的数据进行FFT分析,分析结果返回给FFTDdata
[FFTdata] = power_fftscope(VIwave); 
FFTdata.input = 1; % 对应APP Signal
FFTdata.signal = 1; % 对应APP Dimension

FFTdata.startTime = 0.75; % 对应APP Start Time (s)
FFTdata.cycles = 40; % 对应APP Number of cycles
FFTdata.fundamental = 50; % 对应APP Fundamental frequency (Hz)
FFTdata.maxFrequency = 100; % 对应APP Max frequency for THD computation
% FFTdata.THDmaxFrequency = Inf; % Inf 对应 'Nyquist frequency' 选项;默认值就是Inf
FFTdata.THDbase = 'fund'; % 设顶FFT分析的基准频率:'fund'对应基频,也是默认值;'DC'对应直流
FFTdata.freqAxis = 'hertz'; % 频率轴显示方式:'hertz'对应Hz,也是默认值;'harmonicorder'对应 基准频率的阶数

% 用自定义的设置,再次进行FFT分析
% 无返回值则直接绘制bar图
power_fftscope(FFTdata)

% 有返回值则返回分析得到的结构体,可查看分析得到的数据
[FFTdataed] = power_fftscope(FFTdata);
DC0 = FFTdataed.DCcomponent;
% ……

代码power_fftscope(FFTdata)分析结果与APP完全一致,通过代码绘制得到的.fig图就可以进行相应的格式调整,图像导出自然也水到渠成。

 3.小妙招。数据来源不是simulink的示波器,是否还能利用上面的APP或函数?

用过以上APP和power_fftscope的小伙伴们肯定清楚,它们是针对simulink的示波器数据分析开发的。它们的数据输入格式(例子中的VIwave)需要是一种matlab自带的用于示波器数据存储的带时间的结构体。

 

 注:APP或函数无法识别输入变量有两种可能:变量保存格式不对;simulink的所有数据导出被存放在一个变量(out)中了

 可以看到,VIwave存放了两组信号(VIwave.signals 大小1*2),每组信号又包括3个信号(VIwave.signals.values 有3列 或 VIwave.signals.dimensions 值为3 ),这两组信号共用了一个时间,被存放在VIwave.time中。相比小伙伴看到现在,对“数据来源不是simulink的示波器,是否还能利用上面的APP或函数?”应该有答案了,那就是把示波器输出的带时间的结构体变量当作一个模板,用自己的数据替换掉模板里对应的时间和信号数据即可。这样power_fftscope函数均能可以直接用于分析。

举个栗子:

用5sin(100Πt)+0.5sin(150Πt)替换掉第一组数据中的第一个信号,并进行FFT分析

VIwave.signals(1).values(:,1) = 5*sin(50*2*pi*VIwave.time)+0.5*sin(75*2*pi*VIwave.time);

工具箱分析结果:

函数分析结果:

 

over... 

MATLAB频谱分析工具箱是一种用于对信号进行频谱分析的工具。它提供了丰富的函数和工具,可帮助用户在MATLAB环境中进行频谱分析工作。具体而言,MATLAB频谱分析工具箱包含以下几个主要方面的功能: 1. 数据处理和预处理:工具箱中包含了一系列的函数和工具,可用于对输入数据进行处理和预处理。用户可以使用这些函数来加载和解析数据,进行滤波、降噪、去除干扰等操作,以提高频谱分析的精度和准确度。 2. 频谱估计:工具箱中实现了多种频谱估计方法,包括经典的傅里叶变换、功率谱密度估计、自相关函数估计等。这些估计方法可以帮助用户获取信号的频谱信息,以分析信号的频率成分、能量分布等特征。 3. 频谱可视化:工具箱提供了丰富的可视化函数和工具,用户可通过简单的代码实现对频谱结果的可视化。这些函数和工具可以绘制频谱图、功率谱密度图、频谱瀑布图等,以便用户更直观地观察和分析频谱特征。 4. 谱分析工具:工具箱还提供了一些特殊用途的谱分析工具,如校正频率响应、信号重构、频率滤波等。这些工具可以帮助用户对信号进行更深入的分析和处理,以满足不同应用场景的需求。 总之,MATLAB频谱分析工具箱为用户提供了一套全面且易于使用的工具,可用于对信号进行频谱分析。它结合了数据处理、频谱估计和可视化等功能,使用户能够更充分地理解和分析信号的频谱特征,为科学研究和工程应用提供了可靠的支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值