在 Matlab 中實現一個簡單的傅立葉變換

傅立葉變換可能是數字訊號處理的第一課,它的應用無處不在,它是分析資料(所有扇區)或訊號的強大工具。Matlab 有一套強大的傅立葉變換工具箱。在這個例子中,我們將使用傅立葉變換來分析基本的正弦波訊號,並使用 FFT 生成有時稱為週期圖的資訊:

%Signal Generation
A1=10;                % Amplitude 1
A2=10;                % Amplitude 2
w1=2*pi*0.2;          % Angular frequency 1
w2=2*pi*0.225;        % Angular frequency 2
Ts=1;                 % Sampling time
N=64;                 % Number of process samples to be generated
K=5;                  % Number of independent process realizations
sgm=1;                % Standard deviation of the noise
n=repmat([0:N-1].',1,K);             % Generate resolution
phi1=repmat(rand(1,K)*2*pi,N,1);     % Random phase matrix 1
phi2=repmat(rand(1,K)*2*pi,N,1);     % Random phase matrix 2
x=A1*sin(w1*n*Ts+phi1)+A2*sin(w2*n*Ts+phi2)+sgm*randn(N,K);   % Resulting Signal

NFFT=256;            % FFT length
F=fft(x,NFFT);       % Fast Fourier Transform Result
Z=1/N*abs(F).^2;     % Convert FFT result into a Periodogram

StackOverflow 文件

注意,離散傅立葉變換是通過 Matlab 中的快速傅立葉變換(fft)實現的,兩者都將產生相同的結果,但 FFT 是 DFT 的快速實現。

figure
w=linspace(0,2,NFFT);
plot(w,10*log10(Z)),grid;
xlabel('w [\pi rad/s]')
ylabel('Z(f) [dB]')
title('Frequency Range: [ 0 ,  \omega_s ]')