数字信号处理实验全部程序MATLAB 下载本文

title('N=128点 电信1201')

已知带有测量噪声信号f1=50Hz,f2=1为均值为零、方差为1的随机信号,采样频率为1000Hz, t=0:0.001:0.6;

x=sin(2*pi*50*t)+sin(2*pi*120*t); y=x+2*randn(1,length(t)); Y=fft(y,512);

P=Y.*conj(Y)/512; %求功率 f=1000*(0:255)/512; subplot(2,1,1); plot(y);

title('电信1201') subplot(2,1,2); plot(f,P(1:256));

title('电信1201')

对信号 进行DFT,对其结果进行IDFT,并将IDFT的结果和原信号进行比较。 fs=100; N=128; n=0:N-1; t=n/fs; x=sin(2*pi*40*t)+sin(2*pi*15*t); subplot(2,2,1) plot(t,x)

title('original signal 电信1201') y=fft(x,N); mag=abs(y);

f=(0:length(y)-1)'*fs/length(y); subplot(2,2,2) plot(f,mag)

title('FFT to original signal 电信1201') xifft=ifft(y); magx=real(xifft);

ti=[0:length(xifft)-1]/fs; subplot(2,2,3) plot(ti,magx);

title('signal from IFFT 电信1201') yif=fft(xifft,N); mag=abs(yif); subplot(2,2,4) plot(f,mag)

title('FFT to signal from IFFT 电信201')

用函数conv和FFT计算同一序列的卷积,比较其计算时间。 L=5000; N=L*2-1; n=1:L; x1=0.5*n; x2=2*n;

t0=clock; yc=conv(x1,x2); conv_time=etime(clock,t0) t0=clock;

yf=ifft(fft(x1,N).*fft(x2,N)); fft_time=etime(clock,t0)

实验四

例:用冲激响应不变法设计Butterworth低通数字滤波器,通带波纹小于1dB,阻带在 wp=0.2*pi; ws=0.3*pi;

rp=1;rs=15;ts=0.01;Nn=128; Wp=wp/ts; Ws=ws/ts;

[N,Wn]=buttord(Wp,Ws,rp,rs,'s'); [z,p,k]=buttap(N);

[Bap,Aap]=zp2tf(z,p,k); [b,a]=lp2lp(Bap,Aap,Wn); [bz,az]=impinvar(b,a,1/ts); freqz(bz,az,Nn,1/ts)

title('电信1201')

设计一个Butterworth高通数字滤波器,通带边界频率为300Hz,阻带边界频率为200Hz,通带波纹小于1dB,阻带衰减大于20dB,采样频率为1000Hz。 fs=1000;

wp=300/(fs/2); ws=200/(fs/2); rp=1; rs=15; Nn=128;

[N,Wn]=buttord(wp,ws,rp,rs); [b,a]=butter(N,Wn,'high'); freqz(b,a,Nn,fs)

title('电信1201')

设计一个24阶FIR带通滤波器,通带频率为 wp=[0.35,0.65]; N=24;

b=fir1(2*N,wp); freqz(b,1,512)

title('电信1201')

f=0:0.002:1;

m(1:201)=1;m(202:301)=0;

m(302:351)=0.5;m(352:401)=0;m(402:501)=1; hold

plot(f,m,'r:') b=fir2(64,f,m); [h,f1]=freqz(b); f1=f1./pi;

plot(f1,abs(h))

title('N=64 电信1201')

f=0:0.002:1;

m(1:201)=1;m(202:301)=0;

m(302:351)=0.5;m(352:401)=0;m(402:501)=1; hold

plot(f,m,'r:') b=fir2(256,f,m); [h,f1]=freqz(b); f1=f1./pi;

plot(f1,abs(h))

title('N=256 电信1201')

针对一个含有5Hz、15Hz和30Hz的混和正弦波信号,设计一个FIR带通滤波器。 fc1=10; fc2=20; fs=100;

[n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0], [0.01 0.01

0.01],100);

w1=2*fc1/fs; w2=2*fc2/fs;

window=kaiser(n+1,beta); %使用kaiser窗函数

b=fir1(n,[w1 w2],window); %使用标准频率响应的 freqz(b,1,512); %数字滤波器频率响应 t = (0:100)/fs;

s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30); sf = filter(b,1,s); %对信号s进行滤波 figure

subplot(2,1,1); plot(t,s); title(' subplot(2,1,2); plot(t,sf) title(' 电信1201')

1201') 电信