MTALAB中的fourier(傅里叶级数)变换提取谐波分量

在研究中通常需要对某个数据的波形进行分析,利用傅里叶级数变换分解高次谐波和低频分量

在simulink可以用powergui里的FFT分析,但是其分析后的漂亮统计图难以导出,通常仅截图作为他用,因此可导出到工作区重新画出。

首先,在simulink中将需要进行分析的波形数据利用to workspace模块导入到工作区;然后返回matlab界面创建脚本,编程分析并画出各频率下的分量。例子如下:

在simulink随机生成一个波形,如图:
在这里插入图片描述
将其导入工作区中,创建脚本文件,程序如下:

clf;
fs=1000;  %采样频率
N=1024;  %采样数据点数
n=0:N-1;
t=n/fs;  %时间序列
y=fft(y2.signals.values(:,1),N);  %进行快速傅里叶变换   先查看time采样总数,再按照时间比例算出相应时间对于的采样点,带入signal中可画出对于采样时间点的信号值大小
mag=abs(y);  %求傅里叶变换后的振幅
f=n*fs/N;  %频率序列
subplot(2,1,1),plot(f,mag);  %绘制随频率变化的振幅
xlabel('f/Hz');
ylabel('振幅');
% title('N=128');
grid on;

subplot(2,1,2),plot(f(1:N/2),mag(1:N/2));  %绘制Nyquist频率之前随频率变换的振幅
xlabel('f/Hz');
ylabel('振幅');
% title('N=128');
grid on;

% subplot(2,2,3);
% plot(Ik0.time,Ik0.signals.values(:,1),'b','LineWidth',1);
% grid on;


作者此处用y2装导入的数据,具体程序功能见注释

最后点击运行,得到如下结果:
在这里插入图片描述
在simulink里的powergui中的FFT analysis的结果如图,其仅对0秒到0.02秒时间段的波形进行变换,可能会有参数设置不同带来的较大区别,可自行进行对比:
在这里插入图片描述

欢迎关注公众号获取matlab/simulink学习资料:
在这里插入图片描述
说明:本文仅助力于学习,欢迎交流

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐