离散时间傅里叶变换和离散傅里叶变换
发布时间
阅读量:
阅读量
离散时间傅里叶变换和离散傅里叶变换
该系统采用离散傅里叶变换\textbf{DFT}对输入信号进行频域分析,并通过\textbf{IDFT}实现频域信号与时域信号间的逆向转换关系。
具体而言,
输入序列x(n)经过\textbf{DFT}运算后生成频域序列X(k),
而X(k)则可经由\textbf{IDFT}反推出原始时间序列x(n)。
其中,
\textbf{DFT}[x(n)]与\textbf{IDFT}[X(k)]分别表示离散傅里叶变换及其逆变换过程,
而W_N^{nk}与W_N^{-nk}则代表复指数因子,
用于完成信号在时频域之间的转换运算。
\begin{cases} X(e^{j\omega})被定义为DTFT[x(n)]的结果,并通过累加x(n)e^{-j\omega n}\quad k=0,1,\dots,N-1的方式进行计算 \\ x(n)由IDTFT[X(e^{j\omega})]给出,并通过将X(e^{j\omega})乘以e^{j\omega n}\quad在区间[-π, π]内进行积分来计算 \end{cases}
自定义dtft()
function [w,X] = dtft(x)
% DTFT变换
N = length(x);
n = 0:N-1;
w = linspace(-2*pi,2*pi,500); %将[-2pi,2pi]分割成500份
X = x * exp(-1j*n'*w);
end
自定义dft()
function X = dft(xn)
% 计算离散傅立叶变换(DFT)
N = length(xn); % 获取序列长度
n = 0:N-1; % 时间序列
X = zeros(1, N); % 初始化频域序列
for k = 0:N-1
X(k+1) = sum(xn .* exp(-1i*2*pi*k*n/N)); % 计算DFT的每个频率分量
end
end
例子:
% DTFT
clear;
xn = [0 1 2 3 4 5 6 7];
[w,X] = dtft(xn);
N = length(xn);
n = 0:N-1;
figure('Color','w');
subplot(2 ,2 ,[1,2])
stem(xn,"filled");
subplot(223)
plot(w,abs(X));
subplot(224)
plot(w,angle(X));
% DFT
clear;
xn = [0 1 2 3 4 5 6 7 zeros(1,92)];
X = dft(xn);
N = length(xn);
n = 0:N-1;
figure('Color','w');
subplot(2 ,2 ,[1,2])
stem(xn,"filled");
subplot(223)
stem(abs(X),'filled');
subplot(224)
stem(angle(X),'filled');


全部评论 (0)
还没有任何评论哟~
