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

频谱图

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... 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐