数字信号处理 实验报告(二)

更新时间:2024-04-08 09:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字信号处理

第二次实验报告

学 院:信息工程学院

班 级:2012级电子信息工程*班 姓 名:

学 号:20125507** 指导老师:

实验四:IIR数字滤波器设计及软件实现

一、实验目的

1、熟悉双线性变换设计IIR滤波器的原理与方法 2、掌握IIR滤波器的MATLAB实现方法 二、实验原理简述

IIR数字滤波器间接法基本设计过程:

1、将给定的数字滤波器的指标转换成过渡模拟滤波器的指标; 2、设计过渡模拟滤波器;

3、将过渡模拟滤波器系统函数转换成数字滤波器的系统函数 三、程序与图形

1、%-----------------信号产生函数mstg--------------- function st=mstg %功能函数的写法

%产生信号序列向量st,并显示st的时域波形和频谱

%st=mstg 返回三路调幅信号相加形成的混合信号,长度N=1600 N=1600 %N为信号st的长度。

Fs=10000;T=1/Fs;Tp=N*T; %采样频率Fs=10kHz,Tp为采样时间 t=0:T:(N-1)*T;k=0:N-1;f=k/Tp; fc1=Fs/10; %第1路调幅信号的载波频率fc1=1000Hz,

fm1=fc1/10; %第1路调幅信号的调制信号频率fm1=100Hz fc2=Fs/20; %第2路调幅信号的载波频率fc2=500Hz

fm2=fc2/10; %第2路调幅信号的调制信号频率fm2=50Hz fc3=Fs/40; %第3路调幅信号的载波频率fc3=250Hz,

fm3=fc3/10; %第3路调幅信号的调制信号频率fm3=25Hz xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t); %产生第1路调幅信号 xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t); %产生第2路调幅信号 xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t); %产生第3路调幅信号 st=xt1+xt2+xt3; %三路调幅信号相加 fxt=fft(st,N); %计算信号st的频谱 %-------绘制st的时域波形和幅频特性曲线----- subplot(2,1,1)

plot(t,st);grid;xlabel('t/s');ylabel('s(t)');

axis([0,Tp/8,min(st),max(st)]);title('(a) s(t)的波形') subplot(2,1,2)

stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b) s(t)的频谱') axis([0,Fs/5,0,1.2]);

xlabel('f/Hz');ylabel('幅度')

(a) s(t)的波形32s(t)10-100.0020.0040.0060.0080.010.012t/s(b) s(t)的频谱0.0140.0160.0180.021幅度0.5002004006008001000f/Hz12001400160018002000

2、%-------实验4-2--------- clear all;close all

Fs=10000;T=1/Fs; %采样频率

%调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st st=mstg;

fp=280;fs=450; %下面wp,ws,为fp,fs的归一化值范围为0-1

wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; ?指标(低通滤波器的通、阻带边界频)

[N,wp]=ellipord(wp,ws,rp,rs); %调用ellipord计算椭圆DF阶数N和通带截止频率wp

[B,A]=ellip(N,rp,rs,wp); %调用ellip计算椭圆带通DF系统函数系数向量B和A

[h,w]= freqz(B,A);

y1t=filter(B,A,st); %滤波器软件实现 figure(2);subplot(2,1,1); plot(w,20*log10(abs(h))); axis([0,1,-80,0]) subplot(2,1,2);

t=0:T:(length(y1t)-1)*T; plot(t,y1t);

%axis([0,1,-80,0])

(a) s(t)的波形32s(t)10-100.0020.0040.0060.0080.010.0120.014t/s(b) s(t)的频谱0.0160.0180.021幅度0.5002004006008001000f/Hz12001400160018002000

0-20-40-60-8000.10.20.30.40.50.60.70.80.911.510.50-0.5-100.020.040.060.080.10.120.140.16

3、%-------实验4-3---------

fpl=440;fpu=560;fsl=275;fsu=900;

wp=[2*fpl/Fs,2*fpu/Fs];ws=[2*fsl/Fs,2*fsu/Fs];rp=0.1;rs=60;

[N,wp]=ellipord(wp,ws,rp,rs); %调用ellipord计算椭圆DF阶数N和通带截止频率wp

[B,A]=ellip(N,rp,rs,wp); %调用ellip计算椭圆带通DF系统函数系数向量B和A

[h,w]= freqz(B,A); y2t=filter(B,A,st);

figure(3);subplot(2,1,1);

plot(w,20*log10(abs(h))); axis([0,1,-80,0]) subplot(2,1,2);

t=0:T:(length(y2t)-1)*T; plot(t,y2t);

0-20-40-60-8000.20.40.60.81210-1-200.020.040.060.080.10.120.140.16

4、%-------实验4-4--------- fp=900;fs=550;

wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; ?指标(低通滤波器的通、阻带边界频)

[N,wp]=ellipord(wp,ws,rp,rs);%调用ellipord算椭圆DF阶数N通带截止频率 [B,A]=ellip(N,rp,rs,wp,'high'); %调用ellip计算椭圆带通DF系统函数系数向量B和A

[h,w]= freqz(B,A); y3t=filter(B,A,st);

figure(4);subplot(2,1,1); plot(w,20*log10(abs(h))); axis([0,1,-80,0]) subplot(2,1,2);

t=0:T:(length(y3t)-1)*T; plot(t,y3t);

0-20-40-60-8000.10.20.30.40.50.60.70.80.91210-1-200.020.040.060.080.10.120.140.16四、实验结果分析

由图可见,三个分离滤波器指标参数选取正确,损耗函数曲线达到所给指标。分离出的三路信号y1(n)、 y2(n)、 y3(n)的波形是抑制载波的单频调幅波。 同时,值得注意的是,Ellipord函数的调用: [n,Wp]=ellipord(Wp,Ws,Rp,Rs)

用于计算满足指标的椭圆数字滤波器的最低阶数N和通带边界频率wp,其中wp,ws,rp,rs为四个基本指标,需要注意的是wp,ws应为归一化之后的值。 五、思考题简答

1、请阅读信号产生函数mstg,确定三路调幅信号的载波频率和调制信号频率。 答:第1路调幅信号的载波频率fc1=1000Hz,调制信号频率fm1=100Hz 第2路调幅信号的载波频率fc2=500Hz,调制信号频率fm2=50Hz 第3路调幅信号的载波频率fc3=250Hz,调制信号频率fm3=25Hz

2、信号产生函数mstg中采样点数N=800,对st进行N点FFT可以得到6根理想谱线。如果取N=1000,可否得到6根理想谱线?为什么?N=2000呢?请改变函数mstg中采样点数N的值,观察频谱图验证您的判断是否正确。 答:, s(t)的每个频率成分都是25 Hz的整数倍。 采样频率Fs=10 kHz=25×400 Hz,即在25 Hz的正弦波的1个周期中采样400点。 所以, 当N为400的整数倍时一定为s(t)的整数个周期。 因此,采样点数N=1800时, 对s(t)进行N点FFT不能得到6根理想谱线。 如果取N=2000,能得到6根理想谱线。

实验五:FIR数字滤波器设计与软件实现

一、实验目的

1、掌握窗函数设计FIR数字滤波器的方法与原理

2、掌握用等波纹最佳逼近法设计FIR数字滤波器的原理与方法 3、学会调用MATLAB函数设计FIR数字滤波器

二、实验原理简述

窗函数法设计线性相位低通滤波器设计步骤: 1、选择窗函数的类型,并估计窗口长度N 2、构造希望逼近的频率响应函数(3、计算(n)

4、加窗得到设计结果:h(n)=(n)w(n)

三、程序与图形

1、%--------------------信号产生函数------------------------ function xt=xtg

%信号x(t)产生,并a显示信号的幅频特性曲线

%xt=xtg(N) 产生一个长度为N,有加性高频噪声的单频调幅信号xt,采样频率Fs=1000Hz

%载波频率fc=Fs/10=100Hz,调制正弦波频率f0=fc/10=10Hz. N=1000;Fs=1000;T=1/Fs;Tp=N*T; t=0:T:(N-1)*T;

fc=Fs/10;f0=fc/10; %载波频率fc=Fs/10,单频调制信号频率为f0=Fc/10; mt=cos(2*pi*f0*t); %产生单频正弦波调制信号mt,频率为f0 ct=cos(2*pi*fc*t); %产生载波正弦波信号ct,频率为fc xt=mt.*ct; %相乘产生单频调制信号xt nt=2*rand(1,N)-1; %产生随机噪声nt

%----------设计高通滤波器hn------------

fp=150; fs=200;Rp=0.1;As=70; % 滤波器指标

fb=[fp,fs];m=[0,1]; % 计算remezord函数所需参数f,m,dev dev=[10^(-As/20),(10^(Rp/20)-1)/(10^(Rp/20)+1)];

[n,fo,mo,W]=remezord(fb,m,dev,Fs); % 确定remez函数所需参数

hn=remez(n,fo,mo,W); % 调用remez函数进行设计,用于滤除噪声nt中的低频成分

yt=filter(hn,1,10*nt); %滤除随机噪声中低频成分,生成高通噪声yt

xt=xt+yt; %噪声加信号 fst=fft(xt,N);k=0:N-1;f=k/Tp;

subplot(2,1,1);plot(t,xt);grid;xlabel('t/s');ylabel('x(t)'); axis([0,Tp/5,min(xt),max(xt)]);title('(a) 信号加噪声波形')

subplot(2,1,2);plot(f,abs(fst)/max(abs(fst)));grid;title('(b) 信号加噪声的频谱')

axis([0,Fs/2,0,1.2]);xlabel('f/Hz');ylabel('幅度')

)

(a) 信号加噪声波形105x(t)0-5-1000.020.040.060.10.120.14t/s(b) 信号加噪声的频谱0.080.160.180.21幅度0.50050100150200250f/Hz300350400450500

2、%-------实验5-2--------- clear all xt=xtg;

N=1000;Fs=1000;T=1/Fs;Tp=N*T; k=0:N-1;f=k/Tp; t=0:T:(N-1)*T;

fp=120;fs=150;Rp=0.1;As=60;Fs=1000; wc=(fp+fs)/Fs;

B=2*pi*(fs-fp)/Fs; M=ceil(11*pi/B);

hn=fir1(M-1,wc,blackman(M)); Hw=abs(fft(hn,N)); ywt=fftfilt(hn,xt,N); figure;

subplot(2,1,1);

plot(f,20*log10(Hw)/max(Hw));grid on xlabel('f/Hz');ylabel('幅度(dB)'); title('(a)低通滤波器的幅频特性') axis([0,500,-160,5]); subplot(2,1,2);

plot(t,ywt);grid on

xlabel('t/s');ylabel('y_1(t)'); title('(b)滤除噪声后的信号波形')

(a) 信号加噪声波形105x(t)0-5-1000.020.040.060.10.120.14t/s(b) 信号加噪声的频谱0.080.160.180.21幅度0.50050100150200250f/Hz300350400450500

(a)低通滤波器的幅频特性0幅度(dB)-50-100-150050100150250300350f/Hz(b)滤除噪声后的信号波形20040045050010.5y1(t)0-0.5-100.10.20.30.40.5t/s0.60.70.80.91

3、%-------实验5-3---------

clear all xt=xtg;

N=1024;Fs=1000;T=1/Fs;Tp=N*T; k=0:N-1;f=k/Tp;

K=1000;

t=0:T:(K-1)*T;

fp=120;fs=150;Rp=0.2;As=60; fb=[fp,fs]; m=[1,0];

dev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)]; [Ne,fo,mo,W]=remezord(fb,m,dev,Fs); hn=remez(Ne,fo,mo,W); Hw=abs(fft(hn,1024)); yet=fftfilt(hn,xt,N); figure;

subplot(2,1,1);

plot(f,20*log10(Hw)/max(Hw));grid on xlabel('f/Hz');ylabel('幅度(dB)'); title('(a)低通滤波器的幅频特性') axis([0,500,-80,5]); subplot(2,1,2);

plot(t,yet);grid on

xlabel('t/s');ylabel('y_2(t)'); title('(b)滤除噪声后的信号波形')

(a) 信号加噪声波形105x(t)0-5-1000.020.040.060.10.120.14t/s(b) 信号加噪声的频谱0.080.160.180.21幅度0.50050100150200250f/Hz300350400450500

(a)低通滤波器的幅频特性0幅度(dB)-20-40-60-80050100150250300350f/Hz(b)滤除噪声后的信号波形20040045050010.5y2(t)0-0.5-100.10.20.30.40.5t/s0.60.70.80.91

四、实验结果分析 1、如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?请写出设计步骤.

答:a、选择窗函数的类型,并估计窗口长度N b、构造希望逼近的频率响应函数(c、计算(n)

d、加窗得到设计结果:h(n)=(n)w(n)

2、如果要求用窗函数法设计带通滤波器,且给定通带上、下截止频率为

)

?pl和

?pu,阻带上、下截止频率为

?sl和?su,试求理想带通滤波器的截止频率

?cl和?cu。

slplcusupu答:cl

3、解释为什么对同样的技术指标,用等波纹最佳逼近法设计的滤波器阶数低? 答:用窗函数法设计的滤波器,如果在阻带截止频率附近刚好满足,则离开阻带截止频率越远,阻带衰减富裕量越大,即存在资源浪费;几种常用的典型窗函数的通带最大衰减和阻带最小衰减固定,且差别较大,又不能分别控制。所以设计的滤波器的通带最大衰减和阻带最小衰减通常都存在较大富裕。如本实验所选的blackman窗函数,其阻带最小衰减为74dB,而指标仅为60dB。用等波纹最佳逼

??(???)/2, ??(???)/2

近法设计的滤波器,其通带和阻带均为等波纹特性,且通带最大衰减和阻带最小衰减可以分别控制,所以其指标均匀分布,没有资源浪费,所以期阶数低得多。

实验六:数字信号处理在双音多频拨号系统中的应用

一、实验原理简述

用DFT检测模拟DTMF信号所含有的两个音频频率,是一个用DFT对模拟信号进行频谱分析的问题。根据第三章用DFT对模拟信号进行谱分析的理论,确定三个参数:(1)采样频率,(2)DFT的变换点数N,(3)需要对信号的观察时间的长度。这三个参数不能随意选取,要根据对信号频谱分析的要求进行确定。这里对信号频谱分析也有三个要求: (1)频率分辨率,(2)谱分析的频谱范围,(3)检测频率的准确性。

观察要检测的8个频率,相邻间隔最小的是第一和第二个频率,间隔是73Hz,要求DFT最少能够分辨相隔73Hz的两个频率,即要求。DFT的分辨率和对信号的观察时间有关。考虑到可靠性,留有富裕量,要求按键的时间大于40ms。 要检测的信号频率范围是697~1633Hz,但考虑到存在语音干扰,除了检测这8个频率外,还要检测它们的二次倍频的幅度大小,波形正常且干扰小的正弦波的二次倍频是很小的,如果发现二次谐波很大,则不能确定这是DTMF信号。这样频谱分析的频率范围为697~3266Hz。按照采样定理,最高频率不能超过折叠频率,即,由此要求最小的采样频率应为7.24KHz。因为数字电话总系统已经规定 =8KHz,因此对频谱分析范围的要求是一定满足的。 二、程序与图形

1、% DTMF双频拨号信号的生成和检测程序 %clear all;clc;

tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68]; % DTMF信号代表的16个数 N=205;K=[18,20,22,24,31,34,38,42];

f1=[697,770,852,941]; % 行频率向量 f2=[1209,1336,1477,1633]; % 列频率向量 TN=input('键入6位电话号码= '); % 输入6位数字

TNr=0; %接收端电话号码初值为零 for l=1:6;

d=fix(TN/10^(6-l)); TN=TN-d*10^(6-l); for p=1:4;

for q=1:4;

if tm(p,q)==abs(d); break,end % 检测码相符的列号q end

if tm(p,q)==abs(d); break,end % 检测码相符的行号p end

n=0:1023; % 为了发声,加长序列

x = sin(2*pi*n*f1(p)/8000) + sin(2*pi*n*f2(q)/8000);% 构成双频信号 sound(x,8000); % 发出声音 pause(0.1)

% 接收检测端的程序

X=goertzel(x(1:205),K+1); % 用Goertzel算法计算八点

DFT样本

val = abs(X); % 列出八点DFT向量 subplot(3,2,l);

stem(K,val,'.');grid;xlabel('k');ylabel('|X(k)|') % 画出DFT(k)幅度

axis([10 50 0 120])

limit = 80; % for s=5:8;

if val(s) > limit, break, end % 查找列号 end

for r=1:4;

if val(r) > limit, break, end % 查找行号 end

TNr=TNr+tm(r,s-4)*10^(6-l); end

disp('接收端检测到的号码为:') % 显示接收到的字符 disp(TNr)

%----键入6位电话号码= 123456 %----接收端检测到的号码为: %---- 123456

100100|X(k)|500102030k4050|X(k)|500102030k4050100100|X(k)|500102030k4050|X(k)|500102030k4050100100|X(k)|500102030k4050|X(k)|500102030k4050

2、%-------8位电话号码--------

% DTMF双频拨号信号的生成和检测程序 %clear all;clc;

tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68]; % DTMF信号代表的16个数

N=205;K=[18,20,22,24,31,34,38,42];

f1=[697,770,852,941]; % 行频率向量 f2=[1209,1336,1477,1633]; % 列频率向量 TN=input('键入8位电话号码= '); % 输入8位数字

TNr=0; %接收端电话号码初值为零 for l=1:8;

d=fix(TN/10^(8-l)); TN=TN-d*10^(8-l); for p=1:4;

for q=1:4;

if tm(p,q)==abs(d); break,end % 检测码相符的列号q end

if tm(p,q)==abs(d); break,end % 检测码相符的行号p end

n=0:1023; % 为了发声,加长序列

x = sin(2*pi*n*f1(p)/8000) + sin(2*pi*n*f2(q)/8000);% 构成双频信号 sound(x,8000); % 发出声音 pause(0.1)

% 接收检测端的程序

X=goertzel(x(1:205),K+1); % 用Goertzel算法计算八点DFT样本

val = abs(X); % 列出八点DFT向量 subplot(4,2,l);

stem(K,val,'.');grid;xlabel('k');ylabel('|X(k)|') % 画出DFT(k)幅度

axis([10 50 0 120]) limit = 80; for s=5:8;

if val(s) > limit, break, end % 查找列号 end

for r=1:4;

if val(r) > limit, break, end % 查找行号 end

TNr=TNr+tm(r,s-4)*10^(8-l); end

disp('接收端检测到的号码为:') % 显示接收到的字符 disp(TNr)

%----键入8位电话号码= 12345678 %----接收端检测到的号码为: %---- 12345678

100500101005001010050010100500102030k405010050010100500101005001010050010|X(k)||X(k)|2030k4050|X(k)|2030k4050|X(k)|2030k4050|X(k)|2030k4050|X(k)|2030k4050|X(k)|2030k4050|X(k)|2030k4050

三、实验结果分析

由实验结果可以看出,当输入的六位电话号码时(123456),回车后可以听见六位电话号码对应的DTFM信号的声音,并输出相应的六幅频谱图,第一个图在k=18,k=31两点出现峰值,对应于数字1,其他的频谱分析类似。八位电话号码的检测以此类推。 四、实验心得体会

本次实验,在实验四中,我学会了用双线性变换法设计IIR滤波器的方法,同时学会调用MATLAB数字信号处理工具箱的滤波器设计函数设计各种IIR数字滤波器,通过观察滤波器输入输出信号的时域波形及频谱,建立数字滤波的概念。

在实验五中,学会了用窗函数法设计FIR数字滤波器的方法,掌握用等纹波最佳设计法设计FIR数字滤波器的原理,学习了FIR滤波器的快速卷积实现原理。

实验六中,了解了电话中双音多频信号的产生与检测,以及检测DTMF信号的DFT参数选择。

实验课对于我们的学习起到了引导的作用, 通过实验,我受益匪浅,学习了许多新的知识,但是这只是一个开端,从实验中,我发现还有很多的知识等待我去学习,学会了一些滤波器的设计,但是还达不到熟练的地步,还有待提高。

100500101005001010050010100500102030k405010050010100500101005001010050010|X(k)||X(k)|2030k4050|X(k)|2030k4050|X(k)|2030k4050|X(k)|2030k4050|X(k)|2030k4050|X(k)|2030k4050|X(k)|2030k4050

三、实验结果分析

由实验结果可以看出,当输入的六位电话号码时(123456),回车后可以听见六位电话号码对应的DTFM信号的声音,并输出相应的六幅频谱图,第一个图在k=18,k=31两点出现峰值,对应于数字1,其他的频谱分析类似。八位电话号码的检测以此类推。 四、实验心得体会

本次实验,在实验四中,我学会了用双线性变换法设计IIR滤波器的方法,同时学会调用MATLAB数字信号处理工具箱的滤波器设计函数设计各种IIR数字滤波器,通过观察滤波器输入输出信号的时域波形及频谱,建立数字滤波的概念。

在实验五中,学会了用窗函数法设计FIR数字滤波器的方法,掌握用等纹波最佳设计法设计FIR数字滤波器的原理,学习了FIR滤波器的快速卷积实现原理。

实验六中,了解了电话中双音多频信号的产生与检测,以及检测DTMF信号的DFT参数选择。

实验课对于我们的学习起到了引导的作用, 通过实验,我受益匪浅,学习了许多新的知识,但是这只是一个开端,从实验中,我发现还有很多的知识等待我去学习,学会了一些滤波器的设计,但是还达不到熟练的地步,还有待提高。

本文来源:https://www.bwwdw.com/article/enpr.html

Top