DFT's matlab

function [ Xk ] = DFT( xn,N ) %定于DFT算法
xxn=zeros(1,N);%构造1*N的零矩阵
xxn(1:length(xn))=xn; %将形参赋值进来
Xk=ones(1,N);%构造1*N的全1矩阵
Wn=exp(-1i*2*pi/N);%
wn=ones(N,N);%构造N*N的全1矩阵
for k=0:1:N-1   %DFT公式
    for n=0:1:N-1
        wn(k+1,n+1)=Wn^(k*n);
    end
end
Xk=(wn*xxn')';%矩阵转置相乘
end
xn=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]; %输入的采样序列
N=16;  %序列长度
Xk3=DFT(xn,N);  %调用DFT
L=0:1:N-1;  %横轴长度
subplot(1,1,1);  %画图
stem(L,abs(Xk3));  %数据源,abs求绝对值,对于复数来说是求模
xlabel('k');  %设置横轴名称
ylabel('X(k)');   %设置纵轴名称
title('DFT N=16'); 

实验结果:

原文地址:https://www.cnblogs.com/ajiaoa/p/14274330.html