离散傅里叶变换(DFT)的频域循环移位定理如下:
若:
则:
接下来通过MATLAB编程进行验证,为了便于给出任意移位点数与任意序列的验证,此处将验证代码封装为一个DFT_frequency_circshift函数,代码如下:
function [yn,yn1] = DFT_frequency_circshift( xn,l )
%DFT_frequency_circshift 验证DFT的频域循环移位定理
% xn0-信号,l-移位点数,l>左移,l<0,右移
N=length(xn);
Xk=fft(xn,N);
n=0:N-1;
Yk=circshift(Xk,[1,N-l]); %左移l位
yn=ifft(Yk,N);
WNnl=exp(-j*2*pi/N).^(l*n);
yn1=xn.*WNnl;
figure
subplot(3,1,1);stem(xn);title('时域x(n)');
subplot(3,1,2);stem(Xk);title('频域X(k)');
subplot(3,1,3);stem(Yk);title('X(k)移位l点后的Y(k)');
figure
subplot(2,1,1);stem(yn);title('移位后时域y(n)');
subplot(2,1,2);stem(yn1);title('y_1(n)=x(n)*W_N^n^l');
end
用任意序列xn进行验证,代码如下:
clear all
clc
xn=[zeros(1,5),1:4,5:-1:1,zeros(1,6)];
l=10;
[yn,yn1]=DFT_frequency_circshift( xn,l );
运行后的结果如下图:
由图可看出频域移为后经过傅里叶反变换后的与(函数代码中的yn1)相等即可验证离散傅里叶变换(DFT)的频域循环移位定理。