通過MATLAB程式分析小波變換和FFT變換後訊號的頻率成分

2021-03-22 04:11:32 字數 5491 閱讀 7502

1樓:

啥時候小波變換也能分析頻率成分了?

2樓:濮惜夢府翊

搜一下:通過matlab程式分析小波變換和fft變換後訊號的頻率成分,看有什麼區別?

matlab小波包和小波分析

3樓:

問題1是對

的;問題2也是對的;

問題3的前半部分,對於頻段的計算也是對的,但是「比較各個頻段的幅值,就可知道訊號的頻率成分」是錯的。小波變換不是純頻域的方法,所以通常的應用是不合適用頻率描述分析的,到了計算結果的頻段這一步已經就完成了。你要得到各個層次結果的頻率值需要將各個層次的結果做fft,然後根據你前面的各個頻段算出fft後的頻率值,還要使用centfrq函式算出各層分解時所用小波基的中心頻率,然後在fft的結果中識別出不是中心頻率引起的那些幅值較高的頻率值,將所有分解層次的所有結果的所有fft結果的所有這些頻率值識別出來才是訊號的頻率成分,而且其中多半會帶有原始訊號沒有的假頻率,這些頻率是小波包分解運算時產生的,所以,你看初學小波的人總是喜歡用小波分解去算訊號的頻率,實際上小波分析根本就不是這麼用的,matlab中小波分析就很少和頻率掛鉤,建議你別再和頻率較勁了,那是純頻域的概念,我覺得甚至不適合來描述小波的概念。

最後的問題,除了0~fn/2^n頻段是近似係數,其它所用頻段都是細節係數,但這時候可能已經不能用「高頻」這個詞描述了,因為可能這些細節係數的頻率也並不高了,所以用細節係數更適合。

matlab中fft變換出來後頻率的數值不合理,大家幫忙看看為什麼

4樓:匿名使用者

首先應清楚取樣頻率的概念,取樣頻率fs代表,資料樣本採集的頻率,簡而言之就是資料樣本中兩個連續資料之間的時間間隔為1/fs。

如果你把取樣頻率從2000改為2w那麼,採集資料的時間間隔就從5e-4變成了5e-5,那麼資料的頻譜當然會增加10倍了

5樓:被大學廢了

貌似plot(f,mag);這句頻率軸有問題吧,應該是是從-fs/2到正fs/2,中間的高峰是零頻分量吧!

用fft函式來分析訊號頻率成分

6樓:匿名使用者

讓你感性認識fft函式頻率分析功能,了解一些fft分析頻率的基本情況,如取樣率與混疊關係、樣點數與頻率解析度關係等,還有其它如頻率洩露、柵欄效應等等。的確要做了才知道

matlab中進行fft譜分析,如何將頻譜圖的橫座標轉換成頻率?

7樓:楊好巨蟹座

一.呼叫方法

x=fft(x);

x=fft(x,n);

x=ifft(x);

x=ifft(x,n)

用matlab進行譜分析時注意:

(1)函式fft返回值的資料結構具有對稱性。

例:n=8;

n=0:n-1;

xn=[4 3 2 6 7 8 9 0];

xk=fft(xn)

→xk =

39.0000 -10.7782 + 6.

2929i 0 - 5.0000i 4.7782 - 7.

7071i 5.0000 4.7782 + 7.

7071i 0 + 5.0000i -10.7782 - 6.

2929i

xk與xn的維數相同,共有8個元素。xk的第乙個數對應於直流分量,即頻率值為0。

(2)做fft分析時,幅值大小與fft選擇的點數有關,但不影響分析結果。在ifft時已經做了處理。要得到真實的振幅值的大小,只要將得到的變換後結果乘以2除以n即可。

二.fft應用舉例

例1:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)。取樣頻率fs=100hz,分別繪製n=128、1024點幅頻圖。

clf;

fs=100;n=128; %取樣頻率和資料點數

n=0:n-1;t=n/fs; %時間序列

x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %訊號

y=fft(x,n); %對訊號進行快速fourier變換

mag=abs(y); %求得fourier變換後的振幅

f=n*fs/n; %頻率序列

subplot(2,2,1),plot(f,mag); %繪出隨頻率變化的振幅

xlabel('頻率/hz');

ylabel('振幅');title('n=128');grid on;

subplot(2,2,2),plot(f(1:n/2),mag(1:n/2)); %繪出nyquist頻率之前隨頻率變化的振幅

xlabel('頻率/hz');

ylabel('振幅');title('n=128');grid on;

%對訊號取樣資料為1024點的處理

fs=100;n=1024;n=0:n-1;t=n/fs;

x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %訊號

y=fft(x,n); %對訊號進行快速fourier變換

mag=abs(y); %求取fourier變換的振幅

f=n*fs/n;

subplot(2,2,3),plot(f,mag); %繪出隨頻率變化的振幅

xlabel('頻率/hz');

ylabel('振幅');title('n=1024');grid on;

subplot(2,2,4)

plot(f(1:n/2),mag(1:n/2)); %繪出nyquist頻率之前隨頻率變化的振幅

xlabel('頻率/hz');

ylabel('振幅');title('n=1024');grid on;

執行結果:

fs=100hz,nyquist頻率為fs/2=50hz。整個頻譜圖是以nyquist頻率為對稱軸的。並且可以明顯識別出訊號中含有兩種頻率成分:

15hz和40hz。由此可以知道fft變換資料的對稱性。因此用fft對訊號做譜分析,只需考察0~nyquist頻率範圍內的福頻特性。

若沒有給出取樣頻率和取樣間隔,則分析通常對歸一化頻率0~1進行。另外,振幅的大小與所用取樣點數有關,採用128點和1024點的相同頻率的振幅是有不同的表現值,但在同一幅圖中,40hz與15hz振動幅值之比均為4:1,與真實振幅0.

5:2是一致的。為了與真實振幅對應,需要將變換後結果乘以2除以n。

例2:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t),fs=100hz,繪製:

(1)資料個數n=32,fft所用的取樣點數nfft=32;

(2)n=32,nfft=128;

(3)n=136,nfft=128;

(4)n=136,nfft=512。

clf;fs=100; %取樣頻率

ndata=32; %資料長度

n=32; �t的資料長度

n=0:ndata-1;t=n/fs; %資料對應的時間序列

x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %時間域訊號

y=fft(x,n); %訊號的fourier變換

mag=abs(y); %求取振幅

f=(0:n-1)*fs/n; %真實頻率

subplot(2,2,1),plot(f(1:n/2),mag(1:n/2)*2/n); %繪出nyquist頻率之前的振幅

xlabel('頻率/hz');ylabel('振幅');

title('ndata=32 nfft=32');grid on;

ndata=32; %資料個數

n=128; %t採用的資料長度

n=0:ndata-1;t=n/fs; %時間序列

x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);

y=fft(x,n);

mag=abs(y);

f=(0:n-1)*fs/n; %真實頻率

subplot(2,2,2),plot(f(1:n/2),mag(1:n/2)*2/n); %繪出nyquist頻率之前的振幅

xlabel('頻率/hz');ylabel('振幅');

title('ndata=32 nfft=128');grid on;

ndata=136; %資料個數

n=128; �t採用的資料個數

n=0:ndata-1;t=n/fs; %時間序列

x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);

y=fft(x,n);

mag=abs(y);

f=(0:n-1)*fs/n; %真實頻率

subplot(2,2,3),plot(f(1:n/2),mag(1:n/2)*2/n); %繪出nyquist頻率之前的振幅

xlabel('頻率/hz');ylabel('振幅');

title('ndata=136 nfft=128');grid on;

ndata=136; %資料個數

n=512; �t所用的資料個數

n=0:ndata-1;t=n/fs; %時間序列

x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);

y=fft(x,n);

mag=abs(y);

f=(0:n-1)*fs/n; %真實頻率

subplot(2,2,4),plot(f(1:n/2),mag(1:n/2)*2/n); %繪出nyquist頻率之前的振幅

xlabel('頻率/hz');ylabel('振幅');

title('ndata=136 nfft=512');grid on;

結論:(1)當資料個數和fft採用的資料個數均為32時,頻率解析度較低,但沒有由於添零而導致的其他頻率成分。

(2)由於在時間域內訊號加零,致使振幅譜中出現很多其他成分,這是加零造成的。其振幅由於加了多個零而明顯減小。

(3)fft程式將資料截斷,這時解析度較高。

(4)也是在資料的末尾補零,但由於含有訊號的資料個數足夠多,fft振幅譜也基本不受影響。

對訊號進行頻譜分析時,資料樣本應有足夠的長度,一般fft程式中所用資料點數與原含有訊號資料點數相同,這樣的頻譜圖具有較高的質量,可減小因補零或截斷而產生的影響。

例3:x=cos(2*pi*0.24*n)+cos(2*pi*0.26*n)

(1)資料點過少,幾乎無法看出有關訊號頻譜的詳細資訊;

(2)中間的圖是將x(n)補90個零,幅度頻譜的資料相當密,稱為高密度頻譜圖。但從圖中很難看出訊號的頻譜成分。

(3)訊號的有效資料很長,可以清楚地看出訊號的頻率成分,乙個是0.24hz,乙個是0.26hz,稱為高解析度頻譜。

可見,取樣資料過少,運用fft變換不能分辨出其中的頻率成分。新增零後可增加頻譜中的資料個數,譜的密度增高了,但仍不能分辨其中的頻率成分,即譜的解析度沒有提高。只有資料點數足夠多時才能分辨其中的頻率成分。

關於MATLAB小波分析,matlab小波分析

宕機,要麼自動重啟,刷系統的。小波分析在matlab中實現的具體步驟 用matlab小波分析的例項 內容來自使用者 李雲西。1緒論概述。小波分析是近15年來發展起來的一種新的時頻分析方法。其典型應用包括齒輪變速控制,起重機的非正常雜訊,自動目標所頂,物理中的間斷現象等。而頻域分析的著眼點在於區分突發...

用matlab做小波分析,小波分析在matlab中實現的具體步驟

內容來自使用者 李雲西 1緒論1.1概述 小波分析是近15年來發展起來的一種新的時頻分析方法。其典型應用包括齒輪變速控制,起重機的非正常噪聲,自動目標所頂,物理中的間斷現象等。而頻域分析的著眼點在於區分突發訊號和穩定訊號以及定量分析其能量,典型應用包括細胞膜的識別,金屬表面的探傷,金融學中快變數的檢...

matlab小波包分析的圖形輸出問題

你這個不是已經出圖了嗎?這不已經從上到下有了嗎。當然能用小波工具箱來做了。用db3 4層分解做 小波工具箱第乙個 matlab小波包分析,請教這個圖怎麼看?這是dwt的,哪bai來的小波包。du看個啥,原始訊號那zhi 麼平直,最多d1和d2有些dao不連續點的內位置,但難以定位分析容,主要是原訊號...