《测试信号分析与处理》实验报告
- 格式:doc
- 大小:442.50 KB
- 文档页数:17
测控1005班齐伟0121004931725 (18号)实验一差分方程、卷积、z变换
一、实验目的
通过该实验熟悉 matlab软件的基本操作指令,掌握matlab软件的使用方法,掌握数字信号处理中的基本原理、方法以及matlab函数的调用。
二、实验设备
1、微型计算机1台;
2、matlab软件1套
三、实验原理
Matlab 软件是由mathworks公司于1984年推出的一套科学计算软件,分为总包和若干个工具箱,其中包含用于信号分析与处理的sptool工具箱和用于滤波器设计的fdatool工具箱。它具有强大的矩阵计算和数据可视化能力,是广泛应用于信号分析与处理中的功能强大且使用简单方便的成熟软件。Matlab软件中已有大量的关于数字信号处理的运算函数可供调用,本实验主要是针对数字信号处理中的差分方程、卷积、z变换等基本运算的matlab函数的熟悉和应用。
差分方程(difference equation)可用来描述线性时不变、因果数字滤波器。用x表示滤波器的输入,用y表示滤波器的输出。
a0y[n]+a1y[n-1]+…+a N y[n-N]=b0x[n]+b1x[n-1]+…+b M x[n-M] (1)
ak,bk 为权系数,称为滤波器系数。
N为所需过去输出的个数,M 为所需输入的个数卷积是滤波器另一种实现方法。
y[n]= ∑x[k] h[n-k] = x[n]*h[n] (2) 等式定义了数字卷积,*是卷积运算符。输出y[n] 取决于输入x[n] 和系统的脉冲响应h[n]。
传输函数H(z)是滤波器的第三种实现方法。
H(z)=输出/输入= Y(z)/X(z) (3)即分别对滤波器的输入和输出信号求z变换,二者的比值就是数字滤波器的传输函数。
序列x[n]的z变换定义为
X (z)=∑x[n]z-n (4) 把序列x[n] 的z 变换记为Z{x[n]} = X(z)。
由X(z) 计算x[n] 进行z 的逆变换x[n] = Z-1{X(z)}。
Z 变换是Z-1的幂级数,只有当此级数收敛,Z 变换才有意义,而且同一个Z 变换等式,收敛域不同,可以代表不同序列的Z 变换函数。
这三种数字滤波器的表示方法之间可以进行相互转换。
四、实验步骤
1、熟悉matlab软件基本操作指令。读懂下列matlab程序指令,键入程序
并运行,观察运行结果。
Conv.m% 计算两个序列的线性卷积;
%-----------------------------------------------------------------
clear;
N=5;
M=6;
L=N+M-1;
x=[1,2,3,4,5];
h=[6,2,3,6,4,2];
y=conv(x,h);
nx=0:N-1;
nh=0:M-1;
ny=0:L-1;
subplot(231);
stem(nx,x,'.k');xlabel('n');ylabel('x(n)');grid on;
subplot(232);
stem(nh,h,'.k');xlabel('n');ylabel('h(n)');grid on;
subplot(233);
stem(ny,y,'.k');xlabel('n');ylabel('y(n)');grid on;
filter.m;%求一个离散系统的输出;
clear;
x=ones(100);
t=1:100;
b=[.001836,.007344,.011016,.007374,.001836]; a=[1,-3.0544,3.8291,-2.2925,.55075];
y=filter(b,a,x);
clear;
impz .m% 计算滤波器的冲击响应
b=[.001836,.007344,.011016,.007374,.001836]; a=[1,-3.0544,3.8291,-2.2925,.55075];
[h,t]=impz(b,a,40);
subplot(221)
stem(t,h,'.');grid on;
ylabel('h(n)')
xlabel('n')
filter.m% 计算滤波器的阶跃响应
x=ones(100);t=1:100;
y=filter(b,a,x);
subplot(222)
plot(t,x,'g.',t,y,'k-');grid on;
ylabel('x(n) and y(n)')
xlabel('n')
freqz.m%用来在已知B(z),A(z)的情况下求出系统的频率响应;% 求如下三个系统的幅频响应;
b1=[1/2,1/2];
b2=[1/2,-1/2];
b3=[1 0 1];
b3=b3/2;
[H1,P]=freqz(b1);
subplot(331);plot(P/2/pi,abs(H1));grid on;
[H2,P]=freqz(b2);
subplot(332);plot(P/2/pi,abs(H2));grid on;
[H3,P]=freqz(b3);
subplot(333);plot(P/2/pi,abs(H3));grid on;
zplane(b,a); % 求并画出所给系统的极零图b=[1 -1.7 1.53 -0.68];
a=1;
subplot(222);
zplane(b,a); % 求并画出第二个系统的极零图