八、源程序
主程序:
%产生高斯序列固定了p for k=1:3
p=pro_gauss(9,2^k);subplot(3,1,k);stem(abs(p));if (k==1) title('p=8,q分别等于2,4,8高斯序列的时域特性') ; end end
%高斯序列的幅频 for k=1:3
p=pro_gauss(9,2^k);subplot(3,1,k);stem(abs(my_FFT(p,4)));if (k==1) title('p=8,q分别等于2,4,8高斯序列的时域特性') ;end end
%高斯序列的固定了q temp=[8 13 14]; for k=1:3
p=pro_gauss(temp(k)+1,8);subplot(3,1,k);stem(abs(p));if (k==1) title('q=8,p分别等于8,13,14高斯序列的时域特性') ; end end
%高斯序列的幅频 for k=1:3
p=pro_gauss(temp(k)+1,8);subplot(3,1,k);stem(abs(my_FFT(p,4)));if (k==1) title('q=8,p分别等于8,13,14高斯序列的频域特性') ; end end
%产生衰减正弦信号 %(1)
p=pro_desin(.1,0.0625);subplot(2,1,1);stem(p);title('α=0.1,f=0.0625时的衰减正弦序列')
subplot(2,1,2);
stem(abs(my_FFT(p,4)));
title('α=0.1,f=0.0625时的衰减正弦序列的幅频'); %(2)
temp=[.4375,.5625] for n=1:2
p=pro_desin(.5,temp(n));subplot(3,1,n);stem(p); end
for n=1:2
p=pro_desin(.5,temp(n));subplot(3,1,n);stem(abs(my_FFT(p,50))); end
p=pro_tringle(8);
subplot(2,1,1);stem(p);title('三角序列的时域及幅度频谱'); x=my_FFT(p,3);subplot(2,1,2); stem(abs(x));
stem(abs(x)); p=pro_transtr(8);
subplot(2,1,1);stem(p);title('反三角序列的时域及幅度频谱'); x=my_FFT(p,3);subplot(2,1,2); stem(abs(x));
p=pro_tringle(16);
x=my_FFT(p,4);subplot(2,1,1);title('三角序列补零后的幅度频谱'); stem(abs(x));p=pro_transtr(16);
x=my_FFT(p,4);subplot(2,1,2);title('反三角序列补零后的幅度频谱'); stem(abs(x));
%上机实验
m=pro_desin(.1,.125);subplot(2,1,1);stem(m);title('一个衰减正弦序列')
p=0.1*rand(1,64);y=p+m;subplot(2,1,2);stem(y);title('叠加了随机噪声的衰减正弦序列')
subplot(2,1,1);stem(abs(my_FFT(m,6)));title('一个衰减正弦序列的频谱')
subplot(2,1,2);stem(abs(my_FFT(y,6)));title('叠加了随机噪声的衰减正弦序列的频谱')
子程序:
function[xb]=pro_desin(alpha,f); %产生衰减正弦序列 xb=zeros(1,64); for n=1:64;
xb(n)=exp(-alpha*(n-1)).*sin(2*pi*(n-1)*f); end
function[gauss]=pro_gauss(p,q) %产生高斯序列
gauss=zeros(1,16); for n=1:16
gauss(n)=exp(-(n-p)^2/q); end
function[xb]=pro_desin(alpha,f); %产生衰减正弦序列 xb=zeros(1,64); for n=1:64;
xb(n)=exp(-alpha*(n-1)).*sin(2*pi*(n-1)*f); end
function[xd]=pro_transtr(N) %产生反三角序列 xd=zeros(1,N); for n=1:8 if n<5
xd(n)=5-n; else
xd(n)=n-4; end end
function[xc]=pro_tringle(N) %产生三角序列,长度为N¨ xc=zeros(1,N); for n=1:8 if n<5 xc(n)=n; else
xc(n)=9-n; end end
function[X]=my_FFT(b,N)
%基2按时间抽取乱序输入顺序输出算法 %输入参数为b(n), 序列长度为2^N-1 %输出为序列X(k).
%%%求反序,实现反序输入,正序输出%%%%
%采用递推的方法 其中c(n)+1表示反序输入的第n个值的序列号% c=zeros(1,2^N);%c表示乱序和顺序的对应关系 c(1)=0;c(2)=2^(N-1); for i=1:N-1
c((2^i+1):2^(i+1))=c(1:2^i)+2^(N-i-1); end
X=zeros(1,2^N); d=zeros(1,2^N); for i=1:2^N
d(i)=b(c(i)+1); end%完成初始值的反序%
%%%求出所有的蝶算指数因子%%%% %a是蝶形因子
x=rand(2^N,N+1);a=zeros(1,2^(N-1));q=1;w=zeros(1,2^(N-1)); for o=1:2^(N-1)
w(o)=exp(-j*2*pi*(o-1)/2^N); end
x(:,1)=d'; for k=2:N+1 i=1;p=1;
for m=1:2^(k-2) %求出每级所需的蝶算指数因子% q=(m-1)*2^N/(2^(k-1)); a(p)=w(q+1);p=p+1; end
for n=1:(2^N/(2^(k-1))) %对偶节点个数的确定及变换计算% p=1;
for h=i:(i+(2^(k-2)-1))
x(h,k)=x(h,k-1)+a(p)*x(h+2^(k-2),k-1);
x(h+2^(k-2),k)=x(h,k-1)-a(p)*x(h+2^(k-2),k-1); p=p+1; end
i=(2^(k-1))*n+1; end end
X=(x(:,N+1))'; for i=1:2^N
X(i)=conj(X(i)); end
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库DSP实验报告(二)(5)在线全文阅读。
相关推荐: