在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培訓
編輯