数字信号处理程序大作业

发布 2022-09-03 01:42:28 阅读 6106

数字信号处理实验报告。

学号:姓名:

班级:自硕13

设计数字iir滤波器实验。

实验目的:

1. 通过**冲激响应不变法和双线性变换法;

2. 掌握滤波器性能分析的基本方法。

实验设备:

pc一台,matlab应用软件;

实验要求:

1. 设计带通iir滤波器;

2. 按照冲激响应不变法设计滤波器系数;

3. 按照和双线性变换法设计滤波器系数;

4. 分析幅频特性和相频特性;

5. 生成一定信噪比的带噪信号,并对其滤波,对比滤波前后波形和频谱。

基本原理:

1. 冲激响应不变法;

2. 双线性变换法。

实验步骤:

1. 初始化指标参数;

2. 确定模拟原型的传递函数ha (s);

3. 利用冲激响应不变法和双线性变换法求数字iir滤波器的系统函数hd (z);

4. 画出幅频特性和相频特性曲线;

5. 生成一定信噪比的带噪信号;

6. 对带噪信号进行滤波;

7. 画出滤波前后波形图和频谱图;

8. 计算信噪比增益。

附录: 1) 程序清单:

iir数字滤波器的设计;

采用脉冲响应不变法;

clear;close all;clc;

wp1=0.3*pi;

wp2=0.4*pi;

%初始化指标参数

ws1=0.1*pi;

ws2=0.6*pi;

rp=1;as=40;

fs=2000;

t=1/fs;

ripple=10^(-rp/20);

attn=10^(-as/20);

omgp1=wp1*fs;omgp2=wp2*fs;

omgp=[omgp1 omgp2];

omgs1=ws1*fs;

omgs2=ws2*fs;

omgs=[omgs1 omgs2];

b=omgp2-omgp1;

w0=sqrt(omgp1*omgp2);

n wc]=cheb1ord(omgp,omgs,rp,as,'s');设计切比雪夫1型滤波器

z0 p0 k0]=cheb1ap(n,rp);

ba1=k0*real(poly(z0));

aa1=real(poly(p0));

ba aa]=lp2bp(ba1,aa1,w0,b);

ww=omgs1:omgs2;

hh=freqs(ba,aa,ww);

dbhh=20*log10((abs(hh)+eps)/max(abs(hh)))

[ba aa]=butter(n,wc,'s');

bd ad]=impinvar(ba,aa,fs);

h w]=freqz(bd,ad);

dbh=20*log10((abs(h)+eps)/max(abs(h)))

画图; subplot(1,2,1);

plot(ww/2/pi,abs(hh));

xlabel('频率:hz');

ylabel('h(e^)'

title('幅频响应');

set(gca,'xtickmode','manual','xtick',[ws1*fs/2/pi wp1*fs/2/pi…

wp2*fs/2/pi ws2*fs/2/pi]);

set(gca,'ytickmode','manual','ytick',[attn 1/sqrt(2) ripple]);

grid;

subplot(1,2,2);

plot(ww/2/pi,dbhh);

xlabel('频率:hz');

ylabel('db');

title('幅频响应');

grid;

set(gca,'xtickmode','manual','xtick',[ws1*fs/2/pi wp1*fs/2/pi…

wp2*fs/2/pi ws2*fs/2/pi]);

set(gca,'ytickmode','manual','ytick',[as -3 -rp 0]);

figure;

subplot(2,2,1);

plot(w/pi,abs(h));

xlabel('频率:\pi');

ylabel('h(e^)'

title('幅频响应');

axis([0 1 0 1.1]);

set(gca,'xtickmode','manual','xtick',[0 ws1/pi wp1/pi wp2/pi ws2/pi 1]);

set(gca,'ytickmode','manual','ytick',[0 attn 1/sqrt(2) ripple 1]);

grid;

subplot(2,2,2);

plot(w/pi,angle(h));

xlabel('相频响应');

ylabel('相位');

title('相频响应');

axis([0 1 1.1*min(angle(h)) 1.1*max(angle(h))]

set(gca,'xtickmode','manual','xtick',[0 ws1/pi wp1/pi wp2/pi ws2/pi 1]);

set(gca,'ytickmode','manual','ytick',[1 0 1]);

grid;

subplot(2,2,3);

plot(w/pi,dbh);

xlabel('频率:\pi');

ylabel('db');

title('幅度响应');

axis([0 1 -80 10]);

set(gca,'xtickmode','manual','xtick',[0 ws1/pi wp1/pi wp2/pi ws2/pi 1]);

set(gca,'ytickmode','manual','ytick',[as -3 -rp 0]);

grid;

subplot(2,2,4);

zplane(bd,ad);

采用双线性变换法;

omgp1=(2/t)*tan(wp1/2);omgp2=(2/t)*tan(wp2/2);omgp=[omgp1 omgp2];

omgs1=(2/t)*tan(ws1/2);omgs2=(2/t)*tan(ws2/2);omgs=[omgs1 omgs2];

bw=omgp2-omgp1;

omgw0=sqrt(omgp1*omgp2);

n0 wc0]=cheb1ord(omgp,omgs,rp,as,'s');设计切比雪夫1型滤波器

z0 p0 k0]=cheb1ap(n0,rp);

a1=k0*real(poly(z0));

b1=real(poly(p0));

bc1 ac1]=lp2bp(a1,b1,omgw0,bw);

be ae]=bilinear(bc1,ac1,fs);

hh w1]=freqz(be,ae);

dbhh=20*log10((abs(hh)+eps)/max(abs(hh)))

画图 figure;subplot(2,2,1);

plot(w1/pi,abs(hh));

xlabel('频率:\pi');

ylabel('h(e^)'

title('幅频响应');

axis([0 1 0 1.1]);

set(gca,'xtickmode','manual','xtick',[0 ws1/pi wp1/pi wp2/pi ws2/pi 1]);

set(gca,'ytickmode','manual','ytick',[0 attn 1/sqrt(2) ripple 1]);grid;

subplot(2,2,2);

plot(w1/pi,angle(hh));

xlabel('相频响应');

ylabel('相位');

title('相频响应');

axis([0 1 1.1*min(angle(hh)) 1.1*max(angle(hh))]

set(gca,'xtickmode','manual','xtick',[0 ws1/pi wp1/pi wp2/pi ws2/pi 1]);

set(gca,'ytickmode','manual','ytick',[1 0 1]);

grid;

subplot(2,2,3);

plot(w1/pi,dbhh);

xlabel('频率:\pi');ylabel('db');title('幅度响应');

axis([0 1 -80 10]);

set(gca,'xtickmode','manual','xtick',[0 ws1/pi wp1/pi wp2/pi ws2/pi 1]);

set(gca,'ytickmode','manual','ytick',[as -3 -rp 0]);grid;

subplot(2,2,4);

zplane(be,ae);

生成信号,并进行滤波;

f1=100;

f2=200;

phi1=0;

phi2=0;

fs=1000;

t=1;t=0:1/fs:t;

a=1; y0=a*sin(2*pi*f1*t)+a*sin(2*pi*f2*t);

n=length(t);

noise=0.5*randn(1,n);

f=y0+noise; %信号+噪声

y=filter(bd,ad,f);

y=filter(be,ae,f);

xx=-fs/2:1/t:fs/2;

ff=abs(1/fs*fftshift(fft(f)))

yy=abs(1/fs*fftshift(fft(y)))

画图 figure;

subplot(1,2,1);

plot(t,f);

axis([0,1,-3.5,3.5]);

xlabel('t/s');

ylabel('f');

title('信号+噪声时域波形');

subplot(1,2,2);

plot(t,y);

xlabel('t/s');

ylabel('y');

title('滤波后时域波形');

figure;

subplot(1,2,1);

plot(xx,ff);

xlabel('f/hz');

ylabel('ff');

title('信号+噪声频谱图');

数字信号处理大作业

数据说明。本实验共分为4组子实验,分别将四组数据命名为 2.1 2.4,刺激频率7hz 30hz,采样率为1000hz。刺激序列 arbrcrdrerfr 8s4s8s4s8s4s8s4s8s4s8s30s 每个子实验按照上述序列闪烁6次,即每个频率刺激8s 6 48s。刺激频率 刺激序列。a hz...

数字信号处理大作业

题目一 利用matlab设计模拟带通巴特沃斯滤波器,要求通带下 上截止频率分别为fhpl 4khz,fhpu 6khz,阻带下 上截止频率分别为fhsl 2khz,fhsu 9khz,通带最大衰减rp 1db,阻带最小衰减rs 20db。问题分析 1 该题目中模拟带通滤波器指标 通带下截止频率 wp...

数字信号处理大作业

设计步骤 这次选择设计的是巴特沃斯数字高通滤波器,对输入信号xn cos 8 pi t cos 20 pi t 最高频率f 20 pi 2 pi 10hz,所以采样频率fs应大于等于20hz,在这里我选择的采样频率fs 80hz。设计思想 从归一化模拟低通原型出发,先在模拟域内经频率变换成为所需类型...