离散傅里叶变换时域循环移位定理如下:
接下来通过MATLAB编程进行验证,为了便于给出任意移位点数与任意序列的验证,此处将验证代码封装为一个DFT_time_circshift函数,代码如下:
function [Xk,Yk,Yk1] = DFT_time_circshift( xn,m )
%DFT_time_circshift 验证DFT的时域循环移位定理
% xn0-信号,m-移位点数,m>左移,m<0,右移
N=length(xn);
Xk=fft(xn,N);
k=0:N-1;
yn=circshift(xn,[1,N-m]); %左移m位
Yk=fft(yn,N);
WNmk=exp(-j*2*pi/N).^(-m.*k);
Yk1=Xk.*WNmk;
figure
subplot(3,1,1);stem(xn);title('时域x(n)');
subplot(3,1,2);stem(Xk);title('频域X(k)');
subplot(3,1,3);stem(yn);title('时域移位m点y(n)');
figure
subplot(2,1,1);stem(Yk);title('移位后频域Y(k)');
subplot(2,1,2);stem(Yk1);title('Y_1(k)=X(k)*W_N^-^k^m');
end
对于序列1,进行验证,代码如下:
t=1:1:20;
xn=2*sin(2*t)+3*cos(4*t);
m=5;
[Xk,Yk,Yk1]=DFT_time_circshift( xn,m );
运行后的结果如下图所示:
由图可看出时域移位后的与(代码中的Yk1)相等,接下来再看一下工作区的与,如下图,(由于篇幅限制,并未全部展示)
通过Yk与Yk1的图形与元素值得比较可知,,即离散傅里叶变换(DFT)的时域循环移位定理得以验证。