Fs = 1000; % 採樣頻率 N = 1024; % 採樣點數 ,即實際中一次FFT變換所使用的點數n = 0:N-1; % 採樣序列,為plot繪圖用的序列,其對應點表示的真實頻率為 f = f = n*(Fs/N),Fs/N,是頻率解析度,其中0 <= N < max(N)/2-1 f = ...
Fs = 1000; % 採樣頻率
N = 1024; % 採樣點數 ,即實際中一次FFT變換所使用的點數
n = 0:N-1; % 採樣序列,為plot繪圖用的序列,其對應點表示的真實頻率為 f = f = n*(Fs/N),Fs/N,是頻率解析度,其中0 <= N < max(N)/2-1
f = (-N/2:N/2-1)*Fs/N;%真實頻率序列,真實頻率從(-N/2~(N/2)-1)*(Fs/N)
t = 0:1/Fs:(N/Fs)-1/Fs; % 時間序列
x = 2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*200*t+pi*90/180) ; %原始信號序列
subplot(2,2,1);%繪圖 2行2列的第個1框
plot(t,x);%plot(x,y) 以x 元素為橫坐標值,y 元素為縱坐標值繪製曲線。
grid on;
xlabel('t');
ylabel('y');
title('原始信號');
y = fft(x,N); %對原始信號做N點FFT變換
z = fftshift(y);%對fft結果進行轉換,將頻率移動的正確的位置
M = abs(z);
subplot(2,2,2);%繪圖 2行1列的第2個框
plot(f,M);
grid on;
xlabel('Hz');
ylabel('幅度');%FFT變換後幅度值為原始信號對應頻率的幅值*Fs
title('原始信號FFT');
b = fir1(28,0.25);%更多用法查fir1函數說明。fir1(n,Wn),預設選用哈明窗,n是濾波器階數,Wn是一個歸一化頻率,在濾波器設計中是用fs/2進行歸一。在fir1濾波器設計時採用的是歸一化頻率。實際採樣頻率為fs,實際的截止頻率為fc,設歸一化截止頻率為fcm,fcm=fc/(fs/2)。
fir_output = filter(b,1,x);
subplot(2,2,3);%繪圖 2行1列的第3個框
plot(t,fir_output);
grid on;
xlabel('t');
ylabel('y');
title('FIR濾波後信號(截止頻率為 125 Hz)');
y2 = fft(fir_output,N); %對原始信號做N點FFT變換
z2 = fftshift(y2);%對fft結果進行轉換,將頻率移動的正確的位置
M2 = abs(z2);
subplot(2,2,4);%繪圖 2行1列的第4個框
plot(f,M2);
grid on;
xlabel('Hz');
ylabel('幅度');
title('FIR濾波後信號FFT');