matlab题目:自编程序想要用长度为N的序列的DFT求一个序列长度为2N的实序列的DTFT,代码如下,可以运行但是得出的结果和fft函数的结果不一样。
%用N点的DFT计算2N点的DFT
function X=Nto2N(~)
x=input('x=');
N=length(x)/2;
g=zeros(1,N);
h=zeros(1,N);
X=zeros(1,2N);
G=zeros(1,N);
H=zeros(1,N);
for m=1:N
g(m)=x(2m);
h(m)=x(2m-1);
end
for k=1:N
for n=1:N
G(k)=G(k)+g(n)exp(-1j2Π*(n1.0-1)(k1.0-1)/(N1.0));
end
end
for p=1:N
for q=1:N
H(p)=H(p)+h(q)exp(-1j2Π(p1.0-1)(q1.0-1)/(N1.0));
end
end
for a=1:N
X(a)=G(a)+H(a)exp(-1j2Π(a1.0-1)/(2.0N));
end
for b=(N+1):2N
X(b)=G(b-N)+H(b-N)exp(-1j2Π*(b1.0-1)/(2.0N));
end