在MATLAB中使用fft函数进行谐波分析【转发】
2017-05-22 by:CAE仿真在线 来源:互联网
老师让我做一下谐波分析,我在网上看了一篇帖子,感觉挺不错的,没有转帖,而是总结一下。
可以直接将需要分析的数据输入到command中,分别命名,然后保存为.mat文件。比如:
这样在根目录下就生成一个mymat.mat文件。
这是保存的方法,然后分析。我在网上下载的一组数据,文件名是‘声波数据.mat’。先把这个文件放到根目录下,编写程序如下:
第一张图是信号的波形,第二张图是对其频率的分析。
然后不解的地方是在第4行,出现了y1=y1-mean(y1).
如果没有这一句就会得不到第二张图的结果。
mean函数是对数列的求平均值,解答者说,fft不能对直流量分析,就是使用mean函数将直流量去掉后才能进行分析。
还看了一些帖子是对函数进行fft分析的。
比如下面的程序:
fs=218;
N=218;
n=0:N-1;
n2=1:N/2+1;t=n/fs;
aa=-3*sin(2*pi*32*t)+15*sin(2*pi*52*t)+9*sin(2*pi*66*t);
y=fft(aa);
mag=abs(y);
f=n*fs/N;
figure
plot(f(n2),mag(n2))
>> figure
>> plot(t,aa);
第一张图是对谐波分析的结果,可以看出有32次、52次和66次谐波。幅值比例不是函数中各次谐波的幅值,这个原因是fft本身是离散的求频率,是根据比例来的,这和fft函数对波形分析的原理来的。
然后我们改变采样点的个数,而数据点保持不变,得到的结果
然后改变数据个数,数据点只有30个而采样点为100;得到的结果。
失真了,和预期的不一样,就是说没有分析出来想要的频率,因为数据点太少了,然而频率点还是保持在一定的比例上,比如期望的是32:52:66,而现在的大致是2:6:8.我看过一篇介绍fft分析原理的帖子,大致的意思是采样点足够多时,横坐标每隔一个坐标代表的是1Hz。观察上图,如果采样点不够多就会导致成比例下降。那么如果说采样数据较少,我们只知道一组数据的一些频率并且知道是几次的,那么就可以大致知道含有几次谐波,但是遗憾的是不能够知道谐波幅值大小。
我是初学者,共同探讨联系QQ:1245693624.
本文转自http://blog.sina.com.cn/u/14ecd62080102wton
开放分享:优质有限元技术文章,助你自学成才
相关标签搜索:在MATLAB中使用fft函数进行谐波分析【转发】 MatLab培训 MatLab培训课程 MatLab在线视频教程 MatLab技术学习教程 MatLab软件教程 MatLab资料下载 MatLab代做 MatLab基础知识 Fluent、CFX流体分析 HFSS电磁分析 Ansys培训 Abaqus培训
编辑