fft源代码(matlab)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

对于正弦序列 )(8sin )(3n R n n x N ⋅⎪⎭⎫ ⎝⎛=π进行16点的dft 仿真

k=16;

n1=[0:1:15];

xa1=sin(2*pi*n1/k);

subplot(2,2,1)

plot(n1,xa1)

xlabel('t/T');ylabel('x(n)');

xk1=fft(xa1);xk1=abs(xk1);

subplot(2,2,2)

stem(n1,xk1)

xlabel('k');ylabel('X(k)');

n2=[0:1:7];

xa2=sin(2*pi*n2/k);

subplot(2,2,3)

plot(n2,xa2)

xlabel('t/T');ylabel('x(n)');

xk2=fft(xa2);xk2=abs(xk2);

subplot(2,2,4)

stem(n2,xk2)

xlabel('k');ylabel('X(k)');

function y=myfft(xr,n)

p=0:n-1 ; % 开始倒位序

nu=log2(n);

p1=p;

b=zeros(1,n);

for t=1:nu;

p2=floor(p1/2);

b=b*2+(p1-2*p2);

p1=p2;

end;

yr(p+1)=xr(b+1);

xr=yr; % 倒位序结束

t=0:n/2-1; %计算因子w 开始(只计算

for v=0:n/2-1;

w=exp(-2*i*pi*t/n);

end; %计算因子w 结束

for m=1:nu; % 计算x(k)开始

h=2^(m-1);

k=1;

while(k

for t=1:h;

y=bitshift(k-1,nu-m,nu)+1; %求w 的幂次数

xch(k)=xr(k)+w(y)*xr(k+h);

k=k+1;

end;

for t=1:h;

y=bitshift(k-1-h,nu-m,nu)+1; %求w 的幂次数

xch(k)=xr(k-h)-xr(k)*w(y);

k=k+1;

end;

end;

xr=xch;

end; % 计算x(k)结束

y=xr %输出变换后的结果

相关文档
最新文档