matlab中使用FFT進行諧波分析的程式

時間 2021-08-30 11:02:44

1樓:匿名使用者

參考%二.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樓:盧普龍

很多人問multilab的問題,,。可我就是不會啊

matlab中使用快速pca提取特徵

1 引數ma代表a的均值,也就是mean a 其實這個引數完全沒必要,因為可以從引數a計算得到。2 解釋一下你問的兩個語句的含義 z a repmat ma,m,1 作用是去除直流成分t z z 計算協方差矩陣的轉置 3 關於函式的呼叫 matlab統計工具箱中有函式princomp,也是進行主成分...

MATLAB中的FFT的取樣頻率和取樣點怎樣確定

小石頭科技 取樣頻率就是準備進行fft變換的時間序列資料的頻率,如資料間隔為0.01s,取樣頻率就為100hz,這是確定的 取樣點則根據時間序列資料長度確定,fft即快速傅立葉變換,取樣點數是2的整數倍,才能實現快速計算,所以如果序列長度為3,取樣長度就設為4,資料會自動補0,如果序列長度為63,取...

如何使用 MATLAB 進行威布林函式擬合曲線

執行你的程式產生隨機數,然後輸入weibplot y 可以看是否符合weibull分布,輸入wblfit y 得出兩個數,第乙個是尺度引數,第二個是形狀引數。還有weibull分布隨機數可以直接用wblrnd a,b,c,d 指令吧,a形狀引數,b尺度引數,c行數,d列數。首先是產生威布林分布隨機數...