在MATLAB中使用fft函数进行谐波分析【转发】

2017-05-22  by:CAE仿真在线  来源:互联网

老师让我做一下谐波分析,我在网上看了一篇帖子,感觉挺不错的,没有转帖,而是总结一下。
可以直接将需要分析的数据输入到command中,分别命名,然后保存为.mat文件。比如:
在MATLAB中使用fft函数进行谐波分析
这样在根目录下就生成一个mymat.mat文件。
这是保存的方法,然后分析。我在网上下载的一组数据,文件名是‘声波数据.mat’。先把这个文件放到根目录下,编写程序如下:
在MATLAB中使用fft函数进行谐波分析
第一张图是信号的波形,第二张图是对其频率的分析。

然后不解的地方是在第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);
在MATLAB中使用fft函数进行谐波分析


在MATLAB中使用fft函数进行谐波分析


第一张图是对谐波分析的结果,可以看出有32次、52次和66次谐波。幅值比例不是函数中各次谐波的幅值,这个原因是fft本身是离散的求频率,是根据比例来的,这和fft函数对波形分析的原理来的。
然后我们改变采样点的个数,而数据点保持不变,得到的结果
在MATLAB中使用fft函数进行谐波分析

然后改变数据个数,数据点只有30个而采样点为100;得到的结果。
在MATLAB中使用fft函数进行谐波分析


失真了,和预期的不一样,就是说没有分析出来想要的频率,因为数据点太少了,然而频率点还是保持在一定的比例上,比如期望的是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培训 

编辑
在线报名:
  • 客服在线请直接联系我们的客服,您也可以通过下面的方式进行在线报名,我们会及时给您回复电话,谢谢!
验证码

全国服务热线

1358-032-9919

广州公司:
广州市环市中路306号金鹰大厦3800
电话:13580329919
          135-8032-9919
培训QQ咨询:点击咨询 点击咨询
项目QQ咨询:点击咨询
email:kf@1cae.com