%(1)已知差分方程求系统响应(显示50个数据) clear;clc;close all;
A=[1,-0.9]; B=[0.05,0.05]; %系统差分方程系数向量A和B n=0:49,% 显示50个数据
x1n=[1,1,1,1,1,1,1,1,zeros(1,42)]; %产生信号x1(n)=R8(n) x2n=ones(1,50); %产生信号x2(n)=u(n)
hn=impz(B,A,50); %求系统单位脉冲响应h(n)
subplot(3,1,1); stem(n,hn,'.'); grid; %绘制点状图并加网格 xlabel('n');ylabel('hn');title('系统的单位脉冲响应'); y1n=filter(B,A,x1n); %求系统对x1(n)的响应y1(n) subplot(3,1,2);
stem(n, y1n,'.'); grid; %绘制点状图并加网格
xlabel('n');ylabel(' y1n ');title('系统对R8(n)的响应'); y2n=filter(B,A,x2n); %求系统对x2(n)的响应y2(n) subplot(3,1,3);
stem(n, y2n,'.'); grid; %绘制点状图并加网格
xlabel('n');ylabel(' y2n ');title('系统对u(n)的响应'); %(2)已知单位脉冲响应求系统响应(显示20个点) clear;clc;close all; n=0:19; %产生信号横坐标
xn=[ones(1,8), zeros(1,12)]; %产生信号x(n)=R8(n) h1n=[ones(1,10), zeros(1,10)]; %产生信号h1(n)=R10(n) y1n=conv(h1n,xn); %卷积计算输出信号y1(n) h2n=[1, 2.5, 2.5, 1, zeros(1,16)]; y2n=conv(h2n,xn);
subplot(5,1,1); stem(n,xn,'.'); grid; %绘制点状图并加网格 ylabel('xn');title('系统的输入信号x(n)');
subplot(5,1,2); stem(n,h1n,'.'); grid; %绘制点状图并加网格 ylabel('h1n');title('系统单位脉冲响应h1(n)');
subplot(5,1,3); stem(n,y1n(1:20),'.'); grid;%取y1n前20个数据绘图 ylabel('y1n');title('系统的输出信号y1(n)');
subplot(5,1,4); stem(n,h2n,'.'); grid; %绘制点状图并加网格 ylabel('h2n');title('系统单位脉冲响应h2(n)');
subplot(5,1,5); stem(n,y2n(1:20),'.'); grid;%取y2n前20个数据绘图 ylabel('y2n');title('系统的输出信号y2(n)'); %(3)系统的稳定性判断(显示300个点) clear;clc;close all;
A=[1,-1.8237,0.9801],B=[1/100.49,0,-1/100.49], %系统差分方程系数向量A和B
figure(1);freqz(B,A);%观察系统的谐振频率 n =0:299; %产生信号横坐标
xun =ones(1,300); %产生阶跃信号
y1n=filter(B,A,xun); %谐振器对阶跃的响应y1(n) figure(2); subplot(2,1,1);
stem(n,y1n,'.'); grid; %取y1(n)前300个数据绘图 ylabel('y1(n)');title('谐振器对阶跃信号的响应y1(n)');
xsin=sin(0.014*n)+sin(0.4*n); %产生正弦叠加信号
y2n=filter(B,A,xsin); %谐振器对正弦信号的响应y2(n) figure(2); subplot(2,1,2);
stem(n,y2n,'.'); grid; %取y2(n)前300个数据绘图
ylabel('y2(n)');title('谐振器对正弦信号的响应y2(n)');
5
实验二:用FFT对信号作频谱分析
1. 实验目的
(1)学会用FFT对时域离散信号进行谱分析。
(2)理解序列的傅里叶变换与序列的离散傅里叶变换之间关系。 (3)了解离散傅里叶变换的时域循环移位定理。 2. 实验原理
用FFT对信号作频谱分析是学习数字信号处理的重要内容。需要进行频谱分析的信号主要有时域连续信号和时域离散信号。对连续信号进行频谱分析时,先要对信号进行采样,在满足采样定理条件下,采样序列的数字频谱能准确反映连续信号的模拟频谱,否则会发生频谱混叠现象。由于DFT要求信号时域离散且数量有限,如果序列很长或采样点数太多,计算机存储和DFT计算都很困难,通常采用加窗方法截取部分数据进行DFT运算。DFT只能描述其有限个频点的频率数据,故存在栅栏效应。总之,用DFT分析实际信号的频谱,其结果必然是近似的。
本实验只对离散时间信号进行频谱分析,重点掌握用FFT对时域离散信号进行谱分析的分析方法,理解DFT与序列的傅里叶变换之间的关系,验证离散傅里叶变换的时域循环移位定理。
关于一般信号的频谱分析过程及误差分析,可参见:张登奇,杨慧银.信号的频谱分析及MATLAB实现[J].湖南理工学院学报(自然科学版),2010,(03)。关于周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。如果不知道信号周期,可以尽量选择信号的观察时间长一些。关于模拟周期信号,先采样成周期序列,再按周期序列进行频谱分析。 3.实验内容及步骤
(1)不同点数的FFT频谱分析(参见教材P76) 设时域离散信号x1(n)?R4(n),选择FFT的变换区间N为8和16 两种情况进行频谱分析。分别打印其幅频特性曲线。并对结果进行对比、分析和讨论。 (2)循环移位序列的频谱分析(参见教材P80)
设时域离散信号x2(n)=[1,2,3,4,4,3,2,1];x3(n)=[4,3,2,1,1,2,3,4]。选择FFT的变换区间N为8和16 两种情况分别对以上序列进行频谱分析。分别打印其幅频特性曲线。并对结果进行对比、分析和讨论。 4.思考题
(1)用FFT对连续信号进行频谱分析中,简述连续信号的离散原则和过程。(参见教材P98) (2)当N=8时,x2(n)和x3(n)的幅频特性会相同吗?为什么?N=16 呢? 5.实验报告要求
(1)结合实验内容打印程序清单和信号波形。 (2)对各实验结果进行简单分析和解释。 (3)简要回答思考题。
6.附加题
将R4(n)的傅里叶变换幅频函数|X(ej?)|和R4(n)的8点及16点离散傅里叶变换幅频函数绘在一
个图上,对比分析理解图形,并解释离散傅里叶变换的物理意义。
6
%(1)不同点数的FFT频谱分析(参见教材P76) clear;clc;close all;format compact x1n=ones(1,4), %产生序列
X1k8=fft(x1n,8); X1k16=fft(x1n,16); %计算x1n的8点和16点DFT subplot(2,1,1);k8=[0:7];
stem(k8,abs(X1k8),'.') %绘制x1(n)的8点DFT幅频特性图 xlabel('2π/8');ylabel('幅度'); grid; title('x1(n)的8点幅频特性'); axis([0,8,0,1.2*max(abs(X1k8))]); subplot(2,1,2);k16=[0:15];
stem(k16,abs(X1k16),'.') %绘制x1(n)的16点DFT幅频特性图 xlabel('2π/16');ylabel('幅度'); grid; title('x1(n)的16点幅频特性');
axis([0,16,0,1.2*max(abs(X1k16))]);
%(2)循环移位序列的频谱分析(参见教材P80) clear;clc;close all;format compact
x2n=[1,2,3,4,4,3,2,1], x3n=[4,3,2,1,1,2,3,4],%产生序列
X2k8=fft(x2n,8); X2k16=fft(x2n,16); %计算x2n的8点和16点DFT X3k8=fft(x3n,8); X3k16=fft(x3n,16); %计算x3n的8点和16点DFT subplot(2,2,1);k8=[0:7];
stem(k8,abs(X2k8),'.') %绘制x2(n)的8点DFT幅频特性图 xlabel('2π/8');ylabel('幅度'); grid; title('(a) x2(n)的8点幅频特性'); axis([0,8,0,1.2*max(abs(X2k8))]); subplot(2,2,2);k16=[0:15];
stem(k16,abs(X2k16),'.') %绘制x2(n)的16点DFT幅频特性图 xlabel('2π/16');ylabel('幅度'); grid; title('(b) x2(n)的16点幅频特性'); axis([0,16,0,1.2*max(abs(X2k16))]); subplot(2,2,3);k8=[0:7];
stem(k8,abs(X3k8),'.') %绘制x3(n)的8点DFT幅频特性图 xlabel('2π/8');ylabel('幅度'); grid; title('(c) x3(n)的8点幅频特性'); axis([0,8,0,1.2*max(abs(X3k8))]); subplot(2,2,4);k16=[0:15]; stem(k16,abs(X3k16),'.')
%绘制x3(n)的16点DFT幅频特性图
xlabel('2π/16');ylabel('幅度'); grid; title('(d) x3(n)的16点幅频特性'); axis([0,16,0,1.2*max(abs(X3k16))]);
7
实验三:IIR数字滤波器设计及软件实现
1.实验目的
(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法。 (2)学会根据滤波需求确定滤波器指标参数。
(3)学会调用滤波器设计分析工具fdatool设计各种IIR数字滤波器。 (4)掌握IIR数字滤波器的MATLAB实现方法。
(5)通过观察滤波器输入输出信号的波形,建立数字滤波的概念。 2.实验原理
设计IIR数字滤波器一般采用间接法,即先设计一个模拟滤波器原型,再利用脉冲响应不变法或双线性变换法变换成数字滤波器,其中,应用最广泛的是双线性变换法。本实验要求能根据滤波需求确定滤波器指标参数,学会按设计原理编程设计和调用滤波器设计分析工具fdatool设计各型IIR数字滤波器。本实验软件实现是调用MATLAB信号处理工具箱函数filter函数对给定输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。 3. 实验内容及步骤
(1) IIR数字滤波器设计 根据双线性变换法设计IIR数字滤波器的原理和步骤,设计一个butterworth数字低通滤波器,要求通带临界频率fp=3400Hz,阻带临界频率fs=5000Hz,通带内的最大衰减Ap=2dB,阻带内的最小衰减As=20db,采样频率Fs=22050Hz。 (2) IIR数字滤波器软件实现 利用第(1)步设计的数字滤波器,调用filter函数对信号进行滤波,观察滤波前后的信号波形变化,建立数字滤波的概念。 4.思考题
(1)简述双线性变换法设计IIR数字滤波器的设计步骤。 (2)为了观察数字滤波的效果,应怎样设计滤波前的信号? 5.实验报告要求
(1)结合实验内容打印程序清单和信号波形。 (2)对实验结果进行简单分析和解释。 (3)简要回答思考题。 6.附加题
将?c分别取?cp、?cs、(?cp??cs)/2时三种情况下的IIR数字滤波器幅频函数绘在一个图上,对比分析理解图形,并解释?c的不同取值对幅频函数的影响。
附:IIR数字滤波器的工具设计法
工具设计法是利用MATLAB提供的滤波器设计与分析工具(FDATool)进行设计的一种方法。在命令窗口输入FDATool,即可打开如图所示的图形用户界面设计窗口。该窗口分为上下两部分:上面是设计结果显示;下面用来设定所需的技术参数。FDATool需设置的参数主要有响应类型、设计方法、滤波器阶数及选项、频率参数和幅度参数等项目,不同类型和不同方法的滤波器设计参数不尽相同,图中给出的是某设计实例的设计指标。设置好技术指标后,点击Design Filter按键,即可完成设计。想对设计结果进行分析,可通过分析菜单或相关工具进行分析。
如要将设计结果以传输函数的分子分母形式输出,先运行Edit/convert to single section命令,再运行 File/Export?命令,在弹出的对话框中给变量命名为bz和az,即可在工作空间得到设计结果。
8