自己编程实现DFT算法???

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:06:37
a) 计算实数序列cos(5/16*pi*n) 的256点DFT。
b) 计算周期为1kHz的方波序列(占空比为50%,幅度取为+/-512,采样频率为25kHz,取256点长度) 256点DFT

不用MATLAB里面的FFT算法而是自己编程实现DFT???
高手帮忙啊!!!!!!!!

(a)
function [Xk]=dft(xn,N)
n=0:1:N-1;
k=0:1:N-1;
WN=exp(-1i*2*pi/N);
nk=n'*k;
WNnk=WN.^nk;
Xk=xn*WNnk;

N=256;
n=0:N-1;
xn=cos((5*pi/16)*n);
Xk=dft(xn,N);
subplot(2,1,1)
k=0:1:N-1;
stem(k,abs(Xk));
title('Magnitude of the DFT samples')
xlabel('Frequency index k'); ylabel('Magnitude')
subplot(2,1,2)
stem(k,angle(Xk));
title('Phase of the DFT samples')
xlabel('Frequency index k'); ylabel('Phase')