nbhkdz.com冰点文库

信号与系统软件实验报告

时间:2018-07-01


信号与系统软件实验报告
姓名: 学号:

实验项目七:表示信号与系统的 MATLAB 函数

一、实验项目名称:表示信号、系统的 MATLAB 函数 二、实验目的与任务: 目的:1、加深对常用离散信号的理解; 2、熟悉表示信号的基本 MATLAB 函数。 任务:基本 MATLAB 函数产生离散信号;基本信号之间的简单运算;判断信 号周期。

三、实验原理: 利用 MATLAB 强大的数值处理工具来实现信号的分析和处理,首先就是要学 会应用 MATLAB 函数来构成信号。常见的基本信号可以简要归纳如下: 1、单位抽样序列

? (n) ? ?

?1 ?0

n?0 n?0

在 MATLAB 中可以利用 zeros()函数实现。
x ? zeros(1, N ); x(1) ? 1;

如果 ? (n) 在时间轴上延迟了 k 个单位,得到 ? (n ? k ) 即:

? (n ? k ) ? ?
2、单位阶跃序列

?1 ?0

n?k n?0

?1 u ( n) ? ?0

n?0 n?0

在 MATLAB 中可以利用 ones()函数实现。

x ? ones(1, N );

3、正弦序列
x(n) ? A sin(2?fn / Fs ? ? )

采用 MATLAB 实现
n ? 0 : N ?1 x ? A * sin(2 * pi * f * n / Fs ? fai)

4、复正弦序列

x(n) ? e j?n
采用 MATLAB 实现
n ? 0 : N ?1 x ? exp( j * w * n)

5、指数序列

x(n) ? a n
采用 MATLAB 实现
n ? 0 : N ?1 x ? a.^ n

四、 实验内容: MATLAB 仿真 实验步骤: 1、编制程序产生上述 5 种信号(长度可输入确定),并绘出其图形。 ?1、单位抽样序列 : N=[-5:5] x=[zeros(1,5) stem(N,x) 1 zeros(1,5)]

?2、单位阶跃序列:

N=[-10:10] x=[zeros(1,10) stem(N,x) ones(1,11)]

? 正弦序列

:requency=100 fai=pi/3 A=1 Fs=100 n=[0:100] x=A*sin(2*pi*fai*n/Fs+fai) stem(n,x)

④ 复正弦序列 :

N=100 w=100 n=[0:N] x=exp(i*w*n) stem(n,x)

⑤指数序列: N=10

A=3 n=[0:N] x=A.^n stem(n,x)

2、在 0 ? n ? 31 内画出下面每一个信号:

?n x1[n ]? s i n ( 4
x2 [n] ? cos 2 (

) 4 ?n ?n x3[n] ? sin( ) cos( ) 4 8
1) a.源代码: N=31 n=[0:N] x1=sin(pi*n/4).*cos(pi*n/4) stem(n,x1) b.输出结果如下:

?n

?n ) cos( 4

)

2) a.源代码:

N=31 n=[0:N] x1=cos(pi*n/4).*cos(pi*n/4) stem(n,x1)

b.输出结果如下

3) a.源代码:

N=31

n=[0:N] stem(n,x1)

x1=sin(pi*n/4).*cos(pi*n/8) B. 输出结果如下:

思考问题: 每个信号的基波周期是什么?对于这 3 个信号中的每一个,不依赖 MATLAB,如 何来确定基波周期? 答:第一个信号的基波周期是 4,第二个信号的基波周期也是 4,第三个信号的 基波周期是 32。如果不依赖于 MATLAB,可根据周期公式进行计算即可。 五、项目需用仪器设备名称: 计算机、MATLAB 软件。

实验项目八:离散系统的冲激响应、卷积和
一、实验项目名称:离散系统的冲激响应、卷积和 二、实验目的与任务: 目的:加深对离散系统冲激响应、卷积和分析方法的理解。 任务:利用 MATLAB 函数 conv、filter 计算卷积及系统输出。 三、实验原理: 在离散时间情况下,最重要的是线性时不变(LTI)系统。线性时不变系统的 输入输出关系可通过冲激响应 h[n] 表示:
y[n] ? x[n] ? h[n] ?

k ???

? x[k ]h[n ? k ]

?

其中 ? 表示卷积运算,MATLAB 提供了求卷积函数 conv,即 y=conv(x,h) 这里假设 x[n]和 h[n]都是有限长序列。如果 x[n]仅在 nx ? n ? nx ? N x ?1区间内为 非零,而 h[n]仅在 nh ? n ? nh ? N h ?1上为非零,那么 y[n]就仅在

(nx ? nh ) ? n ? (nx ? nh ) ? N x ? N h ? 2

内为非零值。 同时也表明 conv 只需要在上述区间内计算 y[n]的 N x ? N h ?1 个样本 值。需要注意的是,conv 并不产生存储在 y 中的 y[n]样本的序号,而这个序号是 有意义的,因为 x 和 h 的区间都不是 conv 的输入区间,这样就应负责保持这些 序号之间的联系。 filter 命令计算线性常系数差分方程表征的因果 LTI 系统在某一给定输入时的 输出。具体地说,考虑一个满足下列差分方程的 LTI 系统:

? ak y[n ? k ] ? ? bm x[n ? m]
k ?0 m ?0

N

M

式中 x[n]是系统输入,y[n]是系统输出。若 x 是包含在区间 nx ? n ? nx ? N x ?1内 x[n]的一个 MATLAB 向量,而向量 a 和 b 包含系数 ak 和 bk ,那么 y=filter(b,a,x),就会得出满足下面差分方程的因果 LTI 系统的输出:

? a(k ? 1) y[n ? k ] ? ? b(m ? 1) x[n ? m]
k ?0 m ?0

N

M

注意, a(k ? 1) ? ak 和 b(m ? 1) ? bm ,因为 MATLAB 要求所有的向量序号都从 1 开 始。例如,为了表示差分方程 y[n] ? 2 y[n ?1] ? x[n] ? 3x[n ?1] 表征的系统,就应该 定义 a=[1 2] 和 b=[1 -3]。 由 filter 产生的输出向量 y 包含了 y[n]在与向量 x

中所在样本同一区间上的样本,即 nx ? n ? nx ? N x ?1,以使得两个向量 x 和 y 中 都包含了 N x 个样本。 四、实验内容:MATLAB 仿真 实验步骤: 1、 考虑有限长信号
?n? ?1 , 0 x[n] ? ? ?0, 其余n 5 ? n, 0 ? n ? 5 , h[n] ? ? ?0, 其余n

(a) 首先用解析方法计算 y[n] ? x[n]* h[n] (b) 接下来利用 conv 计算 y[n] ? x[n]* h[n] 的非零样本值, 并将这些样本存入向量 y 中。构造一个标号向量 ny,对应向量 y 样本的序号。用 stem(ny,y)画出这一结

果。验证其结果与(a)是否一致。 源代码: N=[0:10] x=[1 1 1 1 1 1] h=[1 1 1 1 1 1] y=conv(h,x) stem(N,y) 输出结果如下:

2、 对以下差分方程描述的系统
y[n] ? 0.5x[n] ? x[n ?1] ? 2 x[n ? 2] y[n] ? 0.8 y[n ? 1] ? 2 x[n] y[n] ? 0.8 y[n ? 1] ? 2 x[n ? 1]

分别利用 filter 计算出输入信号 x[n] ? nu[n] 在 1 ? n ? 4 区间内的响应 y[n]。 实验源代码分别如下: 1. a=1 b=[0.5 1 2] x=[1 2 3 4]

nx=[1:4] y=filter(b,a,x) stem(nx,y) 2.a=[1 -0.8] b=2 x=[1 2 3 4] nx=[1:4] y=filter(b,a,x) stem(nx,y) 3.a=[1 -0.8] b=[0 2] x=[1 2 3 4] nx=[1:4] y=filter(b,a,x) stem(nx,y) 输出图形分别如下所示:

思考问题:
考虑函数 conv 和 filter 之间的关系,试利用 filter 函数来实现离散时间信号的卷

积。 答:其中 y=filter(p,d,x)用来实现差分方程,d 表示差分方程输出 y 的系数,p 表 示输入 x 的系数, 而 x 表示输入序列。 输出结果长度数等于 x 的长度。 Y=conv(x,h) 是用来实现卷积的,对 x 序列和 h 序列进行卷积,输出的结果个数等于 x 的长度 和 h 的长度之各减去 1。 五、项目需用仪器设备名称:计算机、MATLAB 软件。

实验项目十一:离散系统的转移函数
一、实验项目名称:离散系统的转移函数,零、极点分布和模拟 二、实验目的与任务: 目的:1、加深对离散系统转移函数、零极点概念的理解; 2、根据系统转移函数求系统零极点分布。 任务:利用 MATLAB 函数 tf2zp、zplane 求系统零极点及绘制零极点图;根 据系统零极点图求系统的频率响应。

三、实验原理: 离散系统的时域方程为 其变换域分析方法如下: 系统的频率响应为

? ak y[n ? k ] ? ? bm x[n ? m]
k ?0 m ?0

N

M

H (e j? ) ?
?

B(e j? ) b0 ? b1e ? j? ? ... ? bM e ? jM? ? A(e j? ) a0 ? a1e ? j? ? ... ? a N e ? jN?

Z 域 y[n] ? x[n] ? h[n] ? 系统的转移函数为

m???

? x[m]h[n ? m] ? Y ( z) ? X ( z) H ( z)

B( z) b0 ? b1 z ?1 ? ... ? bM z ? M H ( z) ? ? A( z) a0 ? a1 z ?1 ? ... ? a N z ? N

分解因式 H ( z ) ?

? bk z ?i ?a z
i ?0 k i ?0 N ?i

M

?K

? (1 ? ? z
i

M

?1

)
,其中

? (1 ? ? z
i i ?1

i ?1 N

?1

)

? i 和 ? i 称为零、极点。

在 MATLAB 中,可以用函数[z,p,K]=tf2zp(num,den)求得有理分式形式的 系统转移函数的零、极点,用函数 zplane(z,p)绘出零、极点分布图;也可 以用函数 zplane(num,den)直接绘出有理分式形式的系统转移函数的零、极 点分布图。 四、 实验内容:MATLAB 仿真 实验步骤: 对系统 H ( z ) ?

1 1 ? 0.9 z ? 0.81z ?2
?1

1、编程实现系统的参数输入,绘出幅度频率响应曲线和零、极点分布图。 2、 根据系统的零极点计算系统频率响应的幅值和相位。定义 omega=[0:511]*pi/256 和 unitcirc=exp(j*omega)得到在单位圆上 512 个等分 点,在这些点上将要对频率响应 H (e jw ) 求值。 (a)定义 polevectors1 是一个 2×512 的矩阵,其中每一行包含这样一些复 数,这些复数是由 unitcirc 的相应列减去一个极点位置得到的。如果 ps1 是一个 列向量,它包含了极点的位置,可以用下列命令来完成 》polevectors1 = ones(2, 1) * unitcirc – ps1 * ones(1, 512) 用 abs 和 astan2 定义 polelength1 和 poleangle1 作为 polevectors1 中每一元素的 幅值和相位。 (b)类似与 polevectors1 定义 zerovectors1,使得它是 2×512 的矩阵,其中 包含从零点位置到 unitcirc 元素的向量。定义 zerolength1 和 zeroangle1 分别是这 些向量的幅值和相位。 (c)画出 polelength1 和 zerolength1 对于 omega 的图。根据这些图,预计
H 1 (e jw ) 在哪里有最大值和最小值?

(d)利用 MATLAB 命令 H = freqz (b,a,512,’whole’) 导出幅值和相位,与(c) 中的结果相比较。

源代玛:

b=[1]

a=[1 -0.9 0.81] [b,a]=eqtflength(b,a) [z,p,k]=tf2zp(b,a) figure(1); freqz(b,a,'whole') title('原图像') figure(2) zplane(z,p) title('零极点图’) omega=[0:511]*pi/256 unitcirc=exp(i*omega) x=real(unitcirc) y=imag(unitcirc) psl=p polevectorsl=ones(2,1)*unitcirc-ps1*ones(1,512) p=polevectorsl pabs=abs(p) pastan2=angle(p) zs1=z zerpvectors1=ones(2,1)*unitcirc-zs1*ones(1,512) z=zerpvectors1 zabs=abs(z) zastan2=angle(z) figure(3) x1=omega y1=pabs plot(x1,y1,'rx') hold on figure(3) y2=zabs plot(x1,y2,'bo') hold off

title('polelength1 和 zerolength1 对于 omega 的图') p1=pabs(1,:) p2=pabs(2,:) z1=zabs(1,:) z2=zabs(2,:) P1=pastan2(1,:) P2=pastan2(2,:) Z1=zastan2(1,:) Z2=zastan2(2,:) Hlabs=z1.*z2./(p1.*p2) Hlastan2=Z1+Z2-P1-P2 H=freqz(b,a,512,'whole') Habs=rot90(abs(H)) Hastan2=rot90(angle(H)) HF=fix(Hlastan2./pi) for k=1:512 if HF(k)>0 if rem(HF(k),2)==0 H1Rastan2(k)=Hlastan2(k)-HF(k)*pi H2Rastan2(k)=Hlastan2(k)-HF(k)*pi-pi elseif rem(HF(k),2)==0 H1Rastan2(k)=Hlastan2(k)-HF(k)*pi H1Rastan2(k)=pi-HF(k)*pi+Hlastan2(k) end figure(4) F=x1/(pi) dB=20*log10(Habs) subplot(2,1,1) plot(F,dB) grid on theta=deg2rad( H1Rastan2) else end else end

subplot(2,1,2) plot(F,theta) grid on title('模拟之后的图像') 输出图形如图所示:

思考问题:
根据得到的系统零极点分布,试大致画出系统的频率响应曲线。

五、项目需用仪器设备名称:计算机、MATLAB 软件。


信号与系统软件实验报告.doc

信号与系统软件实验报告 - 信号与系统软件实验报告 姓名: 学号: 实验项目七:

信号与系统软件实验报告.doc

信号与系统软件实验报告 - 实验三 一、实验目的 对下面两个系统函数 H 1 (

信号与系统软件实验实验报告.doc

信号与系统软件实验实验报告 - 实验项目一:表示信号与系统的 MATLAB 函数

信号与系统实验报告..doc

信号与系统实验报告. - 西南交通大学 信号处理原理实验报告 学 院:信息科学与技术学院 张翠芳 任课教师: 姓学班名: 号: 级: 目 录 一、信号与系统实验部分 ...

信号与系统实验报告.doc

实验一姓名 成绩 罗治民 信号的表示与信号的运算 班级电子 12--BF 学号 14122502289 日期 2014.6.9 一、实验条件:计算机一台、MATLAB 软件。 二、实验目的:...

信号与系统实验报告.doc

信号与系统实验报告 - 实验三 常见信号的 MATLAB 表示及运算 一、实验目

信号与系统实验报告_图文.doc

信号与系统实验报告 - 信号与系统软件实验报告 . 实验一 信号的时域基本运算

信号与系统实验报告.doc

信号与系统实验报告 - 信号与系统 试验报告 专业:电子信息工程 班级:12 级电信一班 学号:1204101014 姓名:李国权 信号与系统 (Signal & System) 课程编号...

信号与系统实验报告.doc

信号与系统实验报告 - 信号与系统实验报告 姓学专 名:凌宗华 号:201213

信号与系统实验报告.doc

信号与系统实验报告 - 学生实验报告 (理工类) 课程名称: 学生学号: 所属院部: 信号与系统 学生姓名: 龙蟠学院 专业班级: 指导教师: 20 20 学年 第...

信号与系统实验报告汇总.doc

信号与系统实验报告汇总 - 实验三 常见信号的 MATLAB 表示及运算 一、实

信号与系统实验报告.doc

信号与系统实验报告 - 实验一、熟悉 MATLAB 环境和基本信号的产生与运算

信号与系统 课程实验报告.doc

信号与系统 课程实验报告 实验一实验名称 教师姓名信号的时域分析 及 Matlab ...2.应用Matlab软件实现信号的加、减、乘运算。 3.应用 Matlab 软件实现信号的时...

信号系统实验报告.doc

信号系统实验报告 - 2011 年 5 月 24 日 目录 软件实验 实验一、S

信号与系统 实验报告.doc

信号与系统 实验报告_工学_高等教育_教育专区。大二时信号与系统实验的报告 信号不系统软件实验 报告书 实验一 信号的时域基本运算一、实验目的 1.掌插时域内...

信号系统实验报告.doc

信号系统实验报告 - 电子工程系 信号与系统 课程实验报告 2011---201

信号与系统实验报告2.doc

信号与系统实验报告2 - 本科生实验报告 实验课程 学院名称 专业名称 学生姓名 学生学号 指导教师 实验地点 实验成绩 信号与系统 核技术与自动化工程学院 核工程与...

信号与系统软件实验报告.doc

信号与系统软件实验报告 - 选填,简要介绍文档的主要内容,方便文档被更多人浏览和

电子科大2012信号与系统实验报告_图文.doc

电子科大2012信号与系统实验报告 - 电子科技大学 信号与系统 实 学生姓名:

电子科技大学信号与系统上机实验报告.doc

电子科技大学信号与系统上机实验报告 - 信号与系统 上机实验报告 班级:2010