信号与系统第四次实验报告
更新时间:2024-04-15 13:07:01 阅读量: 综合文库 文档下载
- 信号与系统第五版课后答案推荐度:
- 相关推荐
实验七 离散时间信号和系统
§7.1离散时间正弦信号 目的
学习创建和分析离散时间正弦信号。 相关知识
离散时间正弦和余弦信号能够用复指数信号表示,即
cosn(?)?1212j(ej?n?e?j?n)
sinn(?)?
(ej?n?e?j?n)基本题
1.考虑下面离散时间信号:xM[n]?sin??和10,在0?n?2N2?Mn???N?,假设N=12。对于M=4,5,7
?1区间上画出xM[n]。用
stem创建这些图,并在图的各坐标轴
上给出适当标注。每一个信号的基波周期是什么?由任意的整数M和N值,一般如何来确定信号的基波周期?务必考虑M 代码:clear;clc;
N=12; n=0:(2*N-1); i=1;
for M=[4 5 7 10 15] x=sin(2*pi*M*n./N); subplot(2,3,i) stem(n,x,'fill'); grid; xlabel('n'); ylabel('x'); i=i+1; end
运行结果:
?N的情况。
分析:第一个信号的基波周期为3;第二个信号的基波周期为12;第三个信
号的基波周期为12;第四个信号的基波周期为6。
由任意的整数M和N值,一般来说信号的基波周期为N/(M与N的最大公约数)
2.考虑信号xk[n]?sin??kn?,式中?k?2?k5。对于k?1,2,4,6,用stem对xk[n]画出
在区间0?n?9内的图。应利用subplot在一张图上用单独的坐标轴画出全部信号。已画出的图中有多少个唯一的信号?如果两个信号是完全一样的,请解释为何不同的?k会产生同一个信号。 代码:clear;clc;
n=1:8; i=1;
for k=[1 2 4 6] x=sin(2*pi*k/5*n); subplot(2,2,i)
stem(n,x,'fill') xlabel('n');
ylabel('x'); grid; i=i+1; end
运行结果:
分析:已画出的图中有2个唯一的信号。如果两个信号是完全一样的,
因为信号是离散的信号,而连续的余弦信号又为周期信号,因此当k值取值符合一定要求时,两个离散信号图形可能一模一样。
3.考虑下面3个信号
?2?n??3?n?x1[n]?co?s??sin???N??N?
?2n??3n?x2[n]?2co?s??sin??NN?????2?n??5?n?x3[n]?co?s??3sin???N??2N?
假设对每个信号N=6。试确定是否每个信号都是周期的。如某一信号是周期的,从n?0开始画出该信号的两个周期;如该信号不是周期的,对0?n?4N画出该信号,并说明为何它不是周期的。 代码:clear;clc;
N=6; subplot(3,1,1) n1=0:24;
x1=cos(2*pi*n1./N)+sin(3*pi*n1./N); stem(n1,x1) grid; subplot(3,1,2) n2=0:24;
x2=2*cos(2*n2./N)+sin(3*n2./N); stem(n2,x2) grid; subplot(3,1,3) n3=0:48;
x3=cos(2*pi*n3./N)+3*sin(5*pi*n3./(2*N)); stem(n3,x3) grid;
运行结果:
分析:若2*pi/w0不是有理数,则该信号不是周期的。 中等题
4.在0?n?31内画出下列信号:
??nx1[n]?sin??4???n?s?co????4?
2??n?x2[n]?cos???4?
??n???n?x3[n]?sins??co???4??8?每个信号的基波周期是什么?对于这3个信号不依赖MATLAB如何确定基波周期?
分析:第一个信号的基波周期是 4,第二个信号的基波周期是4,第三个信
号周期为32
5.考虑上面3和4中已画出的信号。两个周期信号的相加必定还是周期信号吗?清说明你的理由? 代码:clear;clc;
n=0:31;
x1=sin(pi*n./4).*cos(pi*n./4); x2=(cos(pi*n./4)).^2; x3=sin(pi*n./4).*cos(pi*n./8); subplot(3,1,1) stem(n,x1) grid; subplot(3,1,2) stem(n,x2) grid; subplot(3,1,3) stem(n,x3) grid;
运行结果:
分析:两个周期信号的相加不一定是周期信号:若两个相加信号的周期不一
样,那么相加后的结果可能不在按规律重复,得到的信号也就不是周期信号。
§7.2离散时间信号时间变量的变换 目的
主要研究离散时间信号的延时与反褶运算。 基本题
1.定义一个MATLAB向量nx是在?3?n?7上的时间变量,而MATLAB向量x是信号x[n]在这些样本上的值,x[n]给出如下:
?2, n?0?1, n?2??x[n]???1, n?3
?3, n?4???0, 其余n
请正确定义x[n],用stem(nx,x)画出该离散时间序列。 代码:clear;clc;
n=-3:7; x=zeros(1,11); x(4)=2;
x(6)=1; x(7)=-1; x(8)=3; stem(n,x,'fill') grid;
运行结果:
2.定义MATLAB向量y1~y4,来表示下列离散时间信号:
y1[n]?x[n?2]
y2[n]?x[n?1]y3[n]?x[?n]y4[n]?x[?n?1]
为此,应该定义y1~y4,关键是要正确定义标号向量ny1~ny4。首先应判断当变换到yi[n]时,一个给定的x[n]样本的变量时如何改变的。标号向量不必要跨于和nx相同的一组变量值,但至少都是11个样本长,并包含了与有关信号全部非零样本的变量值。 代码:clear;clc;
x=zeros(1,11); x(4)=2; x(6)=1;
x(7)=-1; x(8)=3; n=-3:7; n1=n-2; n2=n+1; n3=-n; n4=-n+1; y1=x; y2=x; y3=x; y4=x;
3.利用stem产生
y1[n]到y4[n]的图。根据这些图,陈述每个信号与原始信号x[n]是如何相关联的。 代码:clear;clc;
x=zeros(1,11); x(4)=2; x(6)=1; x(7)=-1; x(8)=3; n=-3:7; n1=n-2; n2=n+1; n3=-n; n4=-n+1;
y1=x; y2=x; y3=x; y4=x; subplot(2,2,1) stem(n1,y1);title('y1');grid; subplot(2,2,4)
stem(n4,y4);title('y2');grid; subplot(2,2,2)
stem(n2,y2);title('y3');grid; subplot(2,2,3)
stem(n3,y3);title('y4');grid;
运行结果:
§7.3离散时间系统的性质 目的
懂得如何来证明一个系统满足或不满足某一给定性质。 相关知识
本课程研究的离散时间系统通常是用几个性质来表征的,如线性、时不变、稳定性、因果性及可逆性等。 基本题
1.系统y[n]?sin??2x[n]?不是线性的。利用信号x1[n]??[n]和x2[n]?2?[n]来证明该
系统是如何违反线性性质的。 证明:当n=0时,若输入
x1[n]??[n],则
x1(0) =1,y10)=1;若
x2[n]?2?[n],则
x2(0)=2,y2(0)=sin(pi/4)=2/2, 结果不等于 2倍y1(0),因此是非线形的。
2.系统y[n]?x[n]?x[n?1]不是因果的。利用信号x[n]?u[n]证明它。定义MATLAB
向量x和y分别代表?5?n?9上的输入和?6?n?9上的输出。
证明:y[n]=x[n]+x[n+1]=u[n]+u[n+1],当n=-1时,y[-1]=u[-1]+u[0]=1,即当n<0时,
存在y(n)不等于0,因此系统y[n]?代码:clear;clc;
for n=-5:9
x(n)=Heaviside(n); end for n=-6:9
y(n)=Heaviside(n)+Heaviside(n+1); end x y
中等题
3.系统y[n]?log?x[n]?不是稳定的。
分析:当n<0时,x[n]=0,而log 0等于负无穷大,此时y[n]无界,也就是说y不是绝对可和,因此系统y[n]?log?x[n]?不是稳定的 4.上述1中的系统不是可逆的。
分析:因为三角函数是一个周期函数,当求反三角函数时,因为不知道pi/(2x(n))落在哪一个周期内而无法确定此系统的逆系统,因此1中的系统不是可逆的 深入题
对于下列的每一个系统,陈述系统是否是线性、时不变、因果、稳定和可逆的。对于你声称该系统不具有的每一个性质,要用MATLAB构造一个反例证明该系统如何违反该性质的。 5.y[n]?x[n]
3x[n]?x[n?1]不是因果的。
分析:此系统非线性。当输入为2x[n]时,输出为8倍y[n],因此非线性定。 6.y[n]?nx[n]
分析:此系统时变。因为系统方程中含有n显示函数,因此为时变系统。 7.y[n]?x[2n]
分析:此系统时变。因为系统中含尺度变换,若输入滞后一个单位,则输出滞后2个单位,系统参数随时间变化了,因此系统时变。 §7.4实现一阶差分方程 目的
学习求解自递归差分方程。 相关知识
离散时间系统往往用线性常系数差分方程来实现。两种最简单的差分方程是一阶移动平均y[n]?x[n]?bx[n?1]和一阶自递归y[n]?ay[n?1]?x[n],能用这些简单系统对许多实际系统进行建模或近似。例如,一阶自递归可以用于银行帐户建模,这时y[n]就是第n次的结余,而a?1?r就是利率为r的x[n]是第n次的存款或取款,复利。 深入题
1.写出一个函数y=diffeqn(a,x,yn1),该函数计算y[n]?ay[n?1]?x[n]所描述的因果系统的输出y[n]。输入向量x包含0?n?向量y包含
0?n?N?1N?1内的x[n],yn1
提供y[-1]的值。输出
内的
y[n]。M文件的第一行应该读出function
y=diffeqn(a,x,yn1)
提示:从y[-1]计算y[0]是自递归的第一步。在M文件中利用for循环从n?0开始依次计算到较大n值的y[n]。 代码:function [y]=diffeqn(a,x,yn1);
N=length(x); for n=1:N if n==1
y(n)=a*yn1*x(n) else y(n)=a*y(n-1)+x(n) end end
2.假设a?1,y[?1]?0,而且仅关心0?n?30内的输出。利用这个函数计算x1[n]??[n]和x2[n]?u[n]时的响应,用stem画出每个响应。
代码:clear;clc;
a=1;yn1=-1; for n=0:30 x2(n+1)=1; if n==0 x1(n+1)=1; else x1(n+1)=0; end end
y1=diffeqn(a,x1,yn1) y2=diffeqn(a,x2,yn1) n=[0:30]; subplot(2,1,1) stem(n,y1);grid; title('y1'); subplot(2,1,2) stem(n,y2);grid; title('y2');
运行结果:
3.假设a?1,y[?1]??1,利用这个函数计算x1[n]?u[n]和x2[n]?2u[n]时,在0?n?30内的y1[n]和y2[n],利用stem画出这两个输出,并画出2y1[n]?y2[n]。已知系统方程的是一线性差分方程,为什么这个差不恒为零? 代码:clear;clc;
a=1;yn1=-1; for n=0:30
x2(n+1)=1; x1(n+1)=1; end
y1=diffeqn(a,x1,yn1) y2=diffeqn(a,x2,yn1) n=[0:30]; subplot(311) stem(n,y1);grid; title('y1'); subplot(312)
stem(n,y2);grid; title('y2'); subplot(313) stem(n,2*y1-y2);grid; title('2*y1-y2');
运行结果:
分析:因为此系统为非因果,有初始储能,因此虽然系统方程的是一线性差分方
程,但这个差不恒为零 4.只要
a?1,方程y[n]?ay[n?1]?x[n]描述的因果系统是
BIBO稳定的。这类系统
的一个性质就是对于足够大的n,初始条件的影响是不重要的。假设a?12,x
向量包含在0?n?30内的x[n]?u[n]。假定y[?1]?0和y[?1]?12的两种情况下,计算
0?n?30内的两个输出信号。利用stem画出这两个响应,它们的差异怎样?
代码:clear;clc;
a=1/2;yn1=0;yn2=-1;
for n=0:30, x(n+1)=1;end
y1=diffeqn(a,x,yn1);y2=diffeqn(a,x,yn1) n=[0:30]; subplot(211)
stem(n,y1);grid;axis([0 30 -0.5 2.5]);title('y1'); subplot(212)
stem(n,y2);grid;axis([0 30 -0.5 2.5]);title('y2');
分析结果:
实验八 离散LTI系统
本章练习覆盖了许多线性时不变(LTI)系统的性质,其中线性和时不变性
是主要关注点。因此,连续LTI系统的输出y(t)是通过卷积积分与输入x(t)和单位冲激响应h(t)相联系的,即y(t)??y[n]?x(?)h(t??)d???。相类似,离散LTI系统的输出
h[n]是通过卷积和与输入
?x[n]和单位冲激响应相联系的,即
y[n]??x[m]h[n?m]。MATLAB的数值计算能力有助于理解卷及运算的几个基本
m???性质。
§8.1 MATLAB函数conv 目的
学习利用conv函数计算离散卷积。 相关知识
? MATLAB函数conv计算下面卷积和:y[n]??x[m]h[n?m]。
m??? 这里假设x[n]和h[n]都是有限长序列。如果x[n]仅在nx为非零,而
h[n]?n?nx?Nx?1y[n]区间内
仅在
nh?n?nh?Nh?1区间内为非零,那么就仅在
这表明nx?nh?n?nx?nh?Nx?Nh?2内为非零值。
conv只需要在上述区间内计算
y[n]的Nx?Nh?1个样本值。然而,conv并不产生y[n]的样本序号,应负责保持序
号之间的联系。 基本题
1.已知如下有限长序列 用解析法计算y[n]??1 0?n?5x[n]???0 其余n
x[n]?x[n]。
分析:通过将序列x表示成{1 1 1 1 1 1},利用对位相乘求和,求出卷积
结果为{1 2 3 4 5 6 5 4 3 2 1}其中6为y(0)对应的元素。
2.利用conv计算y[n]?x[n]?x[n]的非零样本值,并将这些样本存入向量y中。第
一步应定义包含在0?n?5区间内的x[n]样本的向量x,同时应构造向量ny,ny(i)包含存在向量y中的的n个元素应包含nx?nx。利用
y[n]样本的序号,也即y[n]?y?ny?i??。例如
ny(1)
stem(ny,y) 画出所得结果。
代码:clear;clc;
x=[1 1 1 1 1 1]; N=length(x); ny=[0:10]; y=conv(x,x) stem(ny,y); grid on;
运行结果:y =[ 1 2 3 4 5 6 5 4 3 2 1]
3.已知如下有限长序列
?n 0?n?5h[n]???0 其余n
先用解析法计算y[n]?x[n]?h[n]。然后用conv计算y,用stem画出这一结果。 如果将h[n]看作一个LTI系统的单位冲激响应,x[n]是该系统的输入,y[n]是该系统的输出。 代码:clear;clc;
for i=0:5,
x(i+1)=1;h(i+1)=i;%构造x和h end N=length(x); Ny=[0:10] end
y=conv(x,h);stem(ny,y);grid on;
运行结果:y=[ 0 1 3 6 10 15 15 14 12 9 5]
4.将y2[n]?x[n]?h[n?5]与在3中导出的信号y[n]比较,结果怎样?
分析:因为h不同,经过了时移且序列长度增加了,因此卷积后的结果也不一样,
由于卷积后序列长度等于被卷积的两序列长度之和减去1,
y2[n]?x[n]?h[n?5]比在
3中导出的信号y[n]要长,且每个元素值不一样。
5.利用conv计算
y2[n],利用stem画出y2[n]。
代码:clear;clc; h=[0 0 0 0 0 1 2 3 4 5]; x=[1 1 1 1 1 1]; y=conv(x,h) len=length(y);
ny=[0:10];%计算向量y的序号 stem(ny,y); grid on;
运行结果:y=[ 0 0 0 0 0 1 3 6 10 15 15 14 2 9 5]
§8.2 MATLAB函数filter 目的
学习利用filter函数计算离散因果LTI系统在某一给定输入时的输出。 相关知识
filter函数计算由线性常系数差分方程表征的离散因果LTI系统在某一给定输入时的输出。具体的说,考虑一个满足下列差分方程的LTI系统:
KMk
?ak?0y[n?k]??bm?0mx[n?m] (8.1)
?n?nx?Nx?1式中x[n]是系统的输入,若x是包含在区间nxy[n]是系统的输出。
内
的x[n]的一个MATLAB向量,而向量a和b包含系数ak和bm,那么y=filter(b,a,x)就会得到满足下面差分方程的因果LTI系统的输出:
KM
?a(k?1)y(n?k)??b(m?1)x(n?m) (8.2)
k?0m?0其中a(k?1)?ak,b(m?1)?bm。由filter产生的输出向量y包含了y[n]在与x中所在样本同一区间上的样本,即nx以使得向量?n?nx?Nx?1,
x[n]x和y中都包含了Nx是在
个样本。然而值得注意的是filter需要的
是在nx?M?n?nx?1,y[n]nx?K?n?nx?1,以便计算出第一个输出值y[n?nx]。函数
filter假设这些样本全
等于零。
函数filter也能用于计算离散卷积。考虑当
KMkMmak??[k]时满足
?ak?0y[n?k]??bm?0x[n?m]的一类系统,即变为y[n]??bm?0mx[n?m],信号可看成
bmLTI系统的单位冲激响应,因为bm是有限长的,因此称这样的系统维有限长冲
激响应FIR系统。 基本题
1.求解由差分方程y[n]?0.8y[n?1]?2x[n?1]表征的系统,当输入信号x[n]?nu[n]时,在1?n?4区间内的响应y[n]。 代码:clear;clc;
x=[1 2 3 4];
a=2; %a表示方程右边系数 b=[1 -0.8];% b表示方程左边系数 y=filter(a,b,x)
运行结果:y =[2.0000 5.6000 10.4800 16.3840]
2.已知x[n]???1 0?n?5?0 其余n和h[n]???n 0?n?5?0 其余n,利用filter求y[n]?x[n]?h[n]。
并与conv计算结果相比较。 代码:clear;clc;
x=[1 1 1 1 1 1];
h=[0 1 2 3 4 5]; % 表示方程右边系数 b=1;% b表示方程左边系数 y=filter(h,b,x)
运行结果:y=[ 0 1 3 6 10 15];利用conv求出的结果:
y=[ 0 1 3 6 10 15 15 14 12 9 5]
分析:filter求出的卷积是conv函数截短的结果,截短的长度根据输入长度和冲
激相应的长度而定,由filter求出的卷积序列长度跟输入序列长度相等。 3.考虑冲激响应h2[n]?h[n?5],利用filter计算y2[n]?x[n]?h2[n],并用stem画出所得结果。 代码:clear;clc;
a=1;
h=[0 0 0 0 0 1 2 3 4 5];
x=[1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0]%为能看完整的卷积结果,将x补0延长 y=filter(h,a,x) len=length(y); for i=1:len ny(i)=i-6; end stem(ny,y); grid on;
运行结果:y=[ 0 0 0 0 0 1 3 6 10 15 15 14 2 9 5 0 0]
§8.3 离散时间LTI系统的性质 目的
在这个练习中,将对一组特定的信号检验卷积的交换律、结合律和分配律性质。另外还要考查这些性质对于LTI系统的级联和并联意味着什么。 基本题
1.已知信号
?1 0?n?4x1[n]???0 其余n
?1 n?0?-1 n?1??h1[n]??3 n?2?1 n?4???0 其余n?2 n?1?5 n?2??h2[n]??4 n?3?-1 n?4???0 其余n
定义代表区间0?n?9内的x1[n]的MATLAB向量x1,以及代表在区间0?n?4内的h1[n]和h2[n]的MATLAB向量h1和h2。同时,定义nx1和nx2为这些信号合
适的标号向量。利用stem画出这些信号并作适当标注。 代码:clear;clc;
x1=[1 1 1 1 1 0 0 0 0 0] h1=[1 -1 3 1 0] h2=[2 5 4 -1 0]
for i=1:length(x1), nx1(i)=i-1;end for i=1:length(h1), nx2(i)=i-1;end subplot(311)
stem(nx1,x1);grid on;title('x1') subplot(312)
stem(nx2,h1);grid on;title('h1') subplot(313)
stem(nx2,h2);grid on;title('h2')
运行结果:
2.交换律意味着具有单位冲激响应h[n]的LTI系统,在输入为x[n]时所得到输出在输入为h[n]时所得的输出y[n]y[n]与单位冲激响应为x[n],
是一样的,利用conv
以及x1和h1验证这一性质。conv的输出是与卷积次序无关吗? 代码:clear;clc;
x1=[1 1 1 1 1 0 0 0 0 0]; h1=[1 -1 3 1 0]; y1=conv(x1,h1)
y2=conv(h1,x1) %交换卷积次序
运行结果:
分析:通过以上结果可知,conv的输出是与卷积次序无关的,验证了卷积的交
换律这一性质
3.卷积具有分配律性质,这意味着,两个并联系统的输出与单位冲激响应是该并联系统单位冲激响应之和的系统的输出是相同的。利用x1,h1和h2验证分配率性质。当输入为x1[n]时,用单位冲激响应为h1[n]和h2[n]计算LTI系统的输出的和。将结果与输入为x1[n],单位冲激响应为h1[n]?h2[n]的LTI系统的输出进行比较。
代码:clear;clc;
x1=[1 1 1 1 1 0 0 0 0 0]; h1=[1 -1 3 1 0]; h2=[2 5 4 -1 0]; y1=conv(x1,h1); y2=conv(x1,h2);
y=y1+y2 %先分别求卷积,然后求和
yy=conv(x1,h1+h2) %求冲激响应求和,在卷积
运行结果:
分析:由上面数据可知,先分别求卷积,然后求和得出的结果,跟先求冲激响应
求和在卷积得出的结果一模一样,因此验证了分配律。
4.卷积具有结合律性质,这意味着用LTI系统的级联处理一个信号所得的结果等效于一个系统来处理,该系统的单位冲激响应应是全部级联系统中单个冲激响应的卷积。用x1,h1和h2验证结合律性质。 代码:clear;clc;
x1=[1 1 1 1 1 0 0 0 0 0]; h1=[1 -1 3 1 0]; h2=[2 5 4 -1 0]; y1=conv(x1,h1); y2=conv(h1,h2);
y=conv(y1,h2) %先x1与h1卷积,所得结果再与h2卷积 yy=conv(x1,y2)%先h1与h2卷积,再x1与所得结果卷积
运行结果:
分析:从上面的运行结果可知,先x1与h1卷积,所得中间结果再与h2卷积的
最终结果,与先h1与h2卷积,再x1与所得中间结果卷积得到的最终结果一模一样,验证了卷积的交换律这一性质。
中等题
5.假定系统有单位冲激响应为he1[n]?h1[n]和he2[n]?h1[n?n0],这里n0是一个整数,令ye1[n]和ye2[n]是这两个系统当输入为x[n]时的输出。利用交换律性质证明:如果每个系统的输入与单位冲激响应互换的话,输出是相同的。并基于时不变性质证明ye2[n]?ye1[n?n0]。利用
MATLAB确认当n0?2,输入为x1[n]。
证明:卷积的交换律为x1(n)*x2(n)=x2(n)*x1(n)。设系统的单位冲激相应为h(n),
输入为x(n),输出y1(n)= x(n)*h(n);如果每个系统的输入与单位冲激响应互换,即:系统的单位冲激相应变为x(n),输入变为h(n),则输出变为y2(n)=h(n)*x(n)。由于x(n)*h(n)= h(n)*x(n),故y1(n)= y2(n),输出是相同的。
由于he2[n]?he1[n?n0],卷积后相当于一种加权求和,不会改变其时移特
性,ye2(n)= x(n)*he2(n)= y1(n)= x(n)*he1(n-n0)=ye1(n-n0)。 代码:clear;clc;x1=[1 1 1 1 1 0 0 0 0 0]
h1=[1 -1 3 1 0];h2=[0 0 1 -1 3 1 0];y1=conv(x1,h1) y2=conv(x1,h2)
运行结果:
分析:从上面运行结果可知,y2是y1右移连个单位左补0得到。
6.考虑以级联联接的两个系统,分别称系统1和系统2。假设系统1是无记忆的,且其输入/输出关系为
y[n]?(n?1)x[n];系统
2是LTI系统,其单位冲激响应
为hf2[n]?h1[n],当输入为x1[n]时研究这两个系统的级联是否满足结合律性质。 分析:若先经过系统1在经过系统2,则最终输出为[(n+1)x1(n)]*h1(n);若先经
过系统2在经过系统1,则最终输出为(n+1)[x1(n)*h1(n)]。运用MATLAB程序验证如下。 代码:clear;clc;
x1=[1 1 1 1 1 0 0 0 0 0] h1=[1 -1 3 1 0];
%------先经过系统1,再经过系统2----%
for n=0:9,y1(n+1)=(n+1)*x1(n+1);end %求系统1的输出 y=conv(y1,h1)
%------先经过系统2,再经过系统2----% y2=conv(x1,h1); for n=0:length(y2)-1 yy(n+1)=(n+1)*y2(n+1); end yy
运行结果:
结果分析:因为交换系统级联次序后,系统输出不相同,因此这两个系统的级联
不满足结合律性质
7.考虑系统1和系统2的并联性质。系统1是一个无记忆系统,其输入/输出关系为y[n]?x[n]表征;系统
22是LTI系统,其单位冲激响应为hg2[n]?h2[n],当输
入为x[n]?2?[n]时研究这两个系统的并联是否满足分配律性质。 代码:clear;clc;
x=[2 0 0]; h1=[1 -1 3 1 0];
h= [1 0 0 0 0 ]; %系统1的冲激响应,由解析法得到 %------先输入分别过系统,在并联----%
for n=0:length(x)-1,y1(n+1)=x(n+1)^2;end %求系统1的输出 y2=conv(x,h1);
for n=length(x)-1:length(y2),y1(n+1)=0;end %对y1长度不够格后补零 for n=0:length(y2)-1
y(n+1)=y1(n+1)+y2(n+1);
end y
%------先系统函数并联,在输入过系统----%
for n=0:length(h)-1,h2(n+1)=h(n+1)+h1(n+1);end %求系统函数的并联 yy=conv(x,h2)
运行结果:
分析:由上面结果可知,两次输出结果不同,因此这两系统的并联不满足分配律。
§8.4线性和时不变性 目的
在本练习中将更加熟悉系统的线性和时不变的性质。 基本题
考虑如下3个系统: 系统1:w[n]?x[n]?x[n?1]?x[n?2]
系统2:y[n]?cos(x[n]) 系统3:z[n]?nx[n]
其中x[n]是每个系统的输入,w[n],y[n]和z[n]是相应的输出。
1.考虑3个输入x1[n]??[n],x2[n]??[n?1]和x3[n]?(?[n]?2?[n?1])。对系统1,将对这3个输入的响应存入w1,w2和w3中,向量w1,w2和w3仅需包含在区间0?n?5内的w[n]值。利用subplot和stem在一张图上画出w1,w2,w3和w1+2×w2代表的4种函数的图。对系统2和3也作出类似的图。
各功能函数:function [y]=w(x)
len=length(x); for i=1:len
if i==1,y(i)=x(i);
else if i==2,y(i)=x(i)+x(i-1); else y(i)=x(i)+x(i-1)+x(i-2); end end end
function [y1]=y(x) len=length(x); for i=1:len
y1(i)=cos(x(i)); end
function [y1]=z(x) len=length(x); for i=1:len y1(i)=i*x(i); end
代码:clear;clc;
x1=[1 0 0 0 0 0]; x2=[0 1 0 0 0 0]; x3=[1 2 0 0 0 0];
w1=w(x1) %调用函数w求值 w2=w(x2) w3=w(x3)
for n=1:length(x1),ny(n)=n-1;end
subplot(221);stem(ny,w1);grid on;legend('w1');
subplot(222);stem(ny,w2);grid on;legend('w2'); subplot(223);stem(ny,w3);grid on;legend('w3');
subplot(224);stem(ny,w1+2*w2);grid on;legend('w1+2*w2');
注释:若要得到系统2和3的图形,只需要将调用的函数分别改为y和z即可 运行结果:
2.陈述一下是否每个系统都是线性的。若是线性的,说明理由;若不是,利用1中画出的各信号给出一个反例。
分析:系统1和系统3时线性的,因为这两个系统的输入曾大a倍式, ww(n)=a*x(n)- a*x(n-1)- a*x(n-2)=a*( x(n)-x(n-1)-x(n-2) )=a*w(n),因此1线性;
zz(n)=n*(a*x(n))=a*(n*x(n) )=a*z(n),因此系统3线性。
而对于系统2,比较y3与y1+2*y2图形,二者图形并不相同,因此非线性。 3.概述一下是否每个系统都是时不变的。若是,说明理由;若不是,利用1中画出的各信号给出一个反例。
分析:系统1是是不变的,系统2、3是时变的。对于系统1,输入延迟一个单
位,由于变换中不含n的显示函数且不含尺度变换,因此输出也相应延迟一个单位。对系统2和系统3,比较y1、y2和z1、y2可得y2、z2不是y1、z1相应延迟一个单位,因此这两个系统是时变的。 中等题
在这个练习中,要求用单位冲激响应计算一个LTI系统的阶跃响应。有下列先行差分方程定义的两个因果系统: 系统1:y1[n]?3 系统2:y2[n]?35y1[n?1]?x[n] 5ny2[n?1]?x[n]
这里每个系统都满足初始松弛条件。定义h1[n]和h2[n]是系统1和系统2的单位冲激响应。
功能函数定义:function [y]=h1(x)
len=length(x); for i=1:len
if i==1,y(i)=x(i); else y(i)=x(i)-3*y(i-1)/5; end end
function [y]=h2(x) len=length(x); for i=1:len
if i==1,y(i)=x(i);
else y(i)=x(i)-((3/5)^i)*y(i-1); end end
4.在区间0?n?19内计算h1[n]和h2[n],并将它们存入h1和h2中,利用stem画出每个响应。 代码:clear;clc;
x=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; h1=h1(x) h2=h2(x)
ny=ny(20);%构造向量ny的函数
subplot(211),stem(ny,h1);grid on;legend('h1'); subplot(212),stem(ny,h2);grid on;legend('h2');
运行结果:
5.对每个系统,计算在区间0?n?19内的单位阶跃响应,并将它们存入s1和s2中,利用stem画出每个响应。 代码:clear;clc;
x=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1];
s1=h1(x) s2=h2(x)
ny=ny(20);%构造向量ny的函数
subplot(211),stem(ny,s1);grid on;legend('s1'); subplot(212),stem(ny,s2);grid on;legend('s2');
运行结果:
6.从实际的角度看,h1[n]和h2[n]在n?20都为零。因此h1和h2包含了每个系统单位冲激响应的全部信息。定义z1[n]?u[n]?h1[n]和z2[n]?u[n]?h2[n],其中u[n]是单位阶跃函数。利用conv计算在区间0?n?19内的z1[n]和z2[n],并将结果存入z1和z2中。首先须定义一个含有适当区间上的u[n]的向量,然后选取由conv(h1,u)和conv(h2,u)产生的一段代表在区间0?n?19上的样本。因为 已经将两个无限长序列截断了,所以只有conv输出的一部分含有真是的序列值。 代码:clear;clc;
x=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; u=[1 1 1 1 1 ]; h1=h1(x);h2=h2(x);
z11=conv(h1,u);z22=conv(h2,u); z1=z11(1:20) z2=z22(1:20)
运行结果:
7.在同一坐标内画出s1和z1。如果这两个NQU信号完全一样,说明为什么本来就能估计到这一相似性。否则说明两者差异之所在。在不同的坐标轴内画出s2和z2,再次解释为何本就可以预期到两个信号之间任何差异或相似性。 代码:clear;clc;
x=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; u=[1 1 1 1 1 ]; h=h1(x); z11=conv(h,u);
z1=z11(1:20)
x1=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]; s1=h1(x1); ny=ny(20);
subplot(211);stem(ny,z1);grid on;title('z1'); subplot(212);stem(ny,s1);grid on;title('s1');
运行结果:
分析:两个序列变化趋势相同,并且序列前面几个元素相同。因为求卷积时,被卷积的序列是截断的,因此后面求出的值是不同了,但是变化趋势却没有改变。
§8.5非因果有限冲激响应滤波器
在本练习中将学习如何实现单位冲激响应具有有限个非零样本的一类因果LTI系统。这些LTI系统的输入和输出是由下列差分方程所关联:
N2 基本题
y[n]??b[m]x[n?m] (8.3)
m?N11.求输入输出满足(8.3)式的LTI系统的单位冲激响应。如果系统不是因果的,对N1的值应该怎样?
分析:满足(8.3)式的LTI系统的单位冲激响应为b[n],若系统非因果,则N1必
须小于0.
2.假设一LTI系统其单位冲激响应h[n]仅在N1在N3?n?N4?n?N2内为非零,将它与一个仅
内为非零的信号x[n]卷积,该系统的输出y[n]?x[n]?h[n]也一定是有
?n?N6限长的,设其非零区间为N5。求用N1到N4来表示N5和N6。
分析:利用卷积后序列长度等于两被卷积的序列长度之和减去1,可得:
N6=N2+N4, N5=N1+N3。
3.令x[n]为如下有限长信号
?1 n?0?5 n?1???2 n?2x[n]???4 n?3??2 n?4???2 n?5
h[n]为一非因果系统的单位冲激响应
??1?(n3) n?3h[n]????0 其余n
定义MATLAB向量x和h代表这些信号,用stem画出这些信号。 代码:clear;clc;
x=[1 5 2 4 -2 2]; for i=-3:3
h(i+4)=1-abs(i)/3 end; nx=[0:5]; nh=[-3:3]; subplot(211); stem(nx,x); grid on;legend('x');
subplot(212); stem(nh,h); grid on;legend('h');
运行结果:
4.利用conv和在上面定义的向量计算LTI系统的输出y[n]?x[n]?h[n]。定义向量y代表这个输出。利用stem画出这个输出。 代码:clear;clc;
x=[1 5 2 4 -2 2];
for i=-3:3,h(i+4)=1-abs(i)/3,end; y=conv(x,h) ny=[-3:length(y)-4]; stem(ny,y); grid on; title('输出y');
运行结果:
§8.6离散时间卷积 目的
学习求解离散卷积和。 相关知识
离散卷积的表达式可以形象化地看作是:将序列h[m]地时间轴反转并将它移位n个样本,然后将移位后地h[m?n]乘以x[m]并在m轴上将所得到的乘积序列相加。信号x[n]可以看成是由延时和加权脉冲的线性叠加所构成,因为一个LTI系统能用它对单个脉冲的响应来表示,那么一个LTI系统的输出就应该相应于系统对构成x[n]的每一个延时和加权脉冲的响应的叠加。在数学上,这个结果就是卷积和。 基本题
1.因为MATLAB函数conv没有保持卷积序列的时间序号之间的关系,所以还不得不要做额外的事以确定conv结果的正确序号。对序列h[n]?2?[n?1]?2?[n?1]和x[n]??[n]??[n?2],构成向量h和x,定义y[n]?x[n]?h[n]并计算y=conv(h,x),对y确定合适的时间序号,并将这组时间序号存入向量ny中,利用stem(ny,y)
画出y[n]。 代码:clear;clc;
h=[2 0 -2];nh=[-1 0 1]; x=[1 0 1];nx=[0 1 2]; y=conv(x,h);
ny=[ nh(1)+nx(1)): nh(1)+nx(1)+length(y)-1]; stem(ny,y);grid on;title('x与h的卷积'); axis([-2 4 -2.5 2.5])
运行结果:
2.考虑两个有限长序列h[n]和x[n]用MATLAB向量h和x表示,其相应的时间序号由nh=[a:b]和nx=[c:d]给出。调用y=conv(h,x)将会在向量y中得到
y[n]?x[n]?h[n]的正确序列值,但是必须要确定对应的一组时间标号向量
ny。为
了帮助构造向量ny,现考虑序列h[n]??[n?a]??[n?b]和x[n]??[n?c]??[n?d],用解析法求卷积y[n]?x[n]?h[n]。根据所得结果,确定利用a,b,c和d表示的ny应该是什么。为了验证结果,证实当a?0,b?N?1,c?0和d?M?1时,y[n]的长度是
M+N-1。
分析:由解析法及卷积的定义可知,ny=[a+c:b+d]。当a?0,b?时,ny=[0:M+N-2],因此y[n]的长度是M+N-1。 3.考虑由下式给出的输入x[n]和单位冲激响应h[n]
?1?x[n]???u[n?2] ?2?h[n]?u[n?2]nN?1,c?0和d?M?1
如果想用conv计算
0?n?24y[n]?x[n]?h[n],就必须处理x[n]和h[n]的无限长问题。将
的x[n]的值存入向量x,将0?n?14的的h[n]值存入向量h中,再将调用
函数conv(h,x)的结果存入向量y中。因为已经将h[n]和x[n]截断了,要论证conv的输出只有一部分是真实的。试标明在输出中哪些值是真实的,哪些值不是真实的。求参数a,b,c和d的值,以使得nx=[a:b]和nh=[c:d],并由2的答案构成y的正确时间序号。利用stem画出代码:clear;clc;
for i=0:24,
if i<2,x(i+1)=0; else x(i+1)=(1/2)^i; end end nx=[0:24];
for i=0:14,h(i+1)=1;end nh=[0:14]; y=conv(h,x)
ny=[nx(1)+nh(1):nx(1)+nh(1)+length(y)-1]; stem(ny,y);grid on;title('y');
运行结果:
y[n]并指出y[n]中哪些值是真实的,哪些值不真实。
分析:ny的值在0到14范围内,卷积的结果是正确的,其它的值都不是真实的。 个参数的值a=0,b=24,c=0,d=14;ny=[0:38]。 中等题
对于这些练习将研究一种称之为块卷积的方法,这一方法经常用于音乐或语音处理系统的数字滤波器的事实实现中,因为这是希望有较短的处理延时。这一方法特别在用一个相对较短的滤波器处理一个很长的输入序列时最为有用。将输入序列分成一些很短的段,其中每一段都能用相当少的延时单独进行处理。卷积的线性特性能保证所有各段的输出叠加就等于整个序列与滤波器单位冲激响应的卷积。
例如:假设有限长单位冲激响应h[n]的滤波器仅在0?n?P?1内为非零,输入
?序列x[n]的长度比P大很多。现将x[n]分成长度为L的一些段x[n]??r?0xr[n?rL],
式中L?P,且
?x[n?rL] 0?n?L-1xr[n]???0 其余n
4.对于h[n]?(0.9)n(u[n]?u[n?10])和x[n]?cos(n2)sin(2?n5),直接利用conv计算
0?n?99内的y[n]?h[n]?x[n],并用stem画出y[n]。
代码:clear;clc;
for i=0:99
x(i+1)=cos(i^2)*sin(2*pi*i/5); if i<10,h(i+1)=0.9^i; else h(i+1)=0; end end
y=conv(h,x);ny=[0:99]; stem(ny,y(1:100));grid on;title('y');
运行结果:
5.设L?50,现将x[n]分成两个序列。计算y0[n]?h[n]?x0[n]和y1[n]?h[n]?x1[n],这里x0[n]和x1[n]分别是x[n]的前50个和后50个样本。输出y[n]的形式给出
y[n]?y0[n]?y1[n?k]。
求出合适的k值并注意y0[n]和y1[n]都是长度为L?P?1。当y0[n]和y1[n]相加在一起时,一般一定有一个两者都不为零的区域。正是这个原因,这种块卷积的方法称为重叠相加法。用这种方法计算y[n],并画出0?n?99内的y[n],所得结果与4求得的一样吗? 代码:clear;clc;
for i=0:99
x(i+1)=cos(i^2)*sin(2*pi*i/5); if i<10,h(i+1)=0.9^i; else h(i+1)=0; end end
x0=x(1:50);x1=x(51:100); y0=conv(h,x0) y1=conv(h,x1)
k=99;% k为两部分卷积重叠个数,由计算得出
for i=1:50,y(i)=y0(i);end %求前面没有重叠的50个元素 for i=51:149,y(i)=y0(i)+y1(i+49-k);end %求重叠的99个元素 for i=150:199,y(i)=y1(i+49-145);end %求后面没有重叠的50个元素 ny=[0:99];
stem(ny,y(1:100));grid on;title('块卷积');
运行结果:
分析:由卷积的相关性质可知,若用块卷积y0与y1的长度为149,而直接卷积
序列长度为199,由于(149+149)-199=99,可得重叠部分长度为99,即k=99。y0与y1没有重叠的部分为(199-99)/2=50,即y0序列前50个元素与y1序列后50个元素没有重叠。在写代码过程中注意MATLAB中数组下标从1开始。
通过比较直接卷积与块卷积图形,可看出两个图形一模一样,即两种方法
求出结果相同。
深入题
6.写出一个MATLAB函数来完成重叠相加的快卷积。这个函数应当以单位冲激响应h,数据向量x和分段长度作为输入,而且该函数应容许数据向量x是任意长,分段长度L是比滤波器长度大的任意整数。函数的第一行应读出 function y=oafilt(h,x,L)
利用这个函数做5,并用这个结果与利用conv直接卷积所得结果进行比较,从
而证实这个函数运行无误。
思路:要构造本函数,需要根据数据向量x和分段长度计算出没两部分重叠的长
度。首先根须x和L分段,做最后一段长度不够就补0;然后对x每一段分别求卷积;再根据分段卷积结果长度与L确定哪些部分重叠,哪些部分没有重叠,并计算出最终卷积结果。
这个函数的难写之处在于若分成的段数比较多,则除了第一段和最后一段
外,其它每一段与其它段都有两个重叠部分,这给计算带来一定难度,再加上MATLAB数组下标又只能从1开始,增加了烦人的下标运算。 代码:function y=oafilt(h,x,L);%h为单位冲激响应,x为数据向量,L为分段长度
N=length(x);Nh=length(h);
yu=mod(N,L);bu=L-yu;P=(N+bu)/L;%bu为最后一个截断x需要补零的个
数,P为截的段数
for i=1:P
if i
y(i,:)=conv(h,xj(i,:));%分别求卷积 end
Ny=length(y(1,:));
k=((Nh+L-1)*P-(Nh+N-1))/P;%计算重叠部分长度 for m=1:P-1
for i=1:Ny-k,yy((m-1)*Ny+i)=y(m,i);end%前面没重叠部分
for i=Ny-k+1:Ny+1,yy((m-1)*Ny+i)=y(m,i)+y(m+1,i-Ny+k);end %重叠部分 for i=Ny+2:Ny-k,yy( (m-1)*Ny+i )=y(m+1,i-Ny+k+1:Ny-k);end %后面没重
叠部分
end
代码分析:这个代码还是有一点错误,因此不能正确运行出结果。不过我个人觉得思路没错,跟前面一个题思路差不多,只是对于截成多段要复杂很多。我改了1个多小时,没弄出来,放弃了,等期末考试完了认真去改一下。
§8.7通过逆滤波器的回声消除 目的
这个练习要研究从一段语音信号的记录中消除回声的问题。 相关知识
着手这个练习之前,需要装入语音文件lineuo.mat。如果这个文件已经在你的MATLABPATH的某个地方,就键入 >> load lineup.mat
将数据装进MATLAB中去。一旦数据装入MATLAB,语音波形就存入变量y中。因为这段语音是用采样率8192Hz录制的,所以键入 >> sound(y,8192)
就能听到语音,应该听到词组“line up”并有回声。由向量y表示的y[n]具有形式为
y[n]?x[n]?ax[n?N]
(2.4)
其中x[n]是未被污染的语音信号,它被延时N个样本且在幅度上减小a?1倍后又反过来加到x[n]上去。这对于像从一面墙那样的吸收反射回来的信号所形成的回声来说,是一个合理的模型。
本练习都用回声的眼是指N=1000,回声衰减a?0.5。 基本题
1.本练习用线性滤波消除回声。因为回声可用(2.4)式的线性系统表示,试求并画出(2.4)式回声系统的单位冲激响应,并将它在0?n?1000内的值存入向量he中。 代码:clear;clc;
load lineup.mat sound(y,8192)
impz(y);%调用函数求单位冲激响应并画图 grid on;title('单位冲激响应'); he=y(1:1001)
运行结果:
听到比较浑浊的声音,回音很重并且比较长。
2.考虑由下面差分方程描述的回声消除系统
z[n]?az[n?N]?y[n] (2.5)
式中y[n]是输入,z[n]式回声消除的输出。根据导出关联z[n]和x[n]的总差分方程证明,
(2.5)式确实是(2.4)式的逆。对于总差分方程,z[n]?证明:因为z[n]?az[n?N]?x[n]?ax[n?N],故
y[n]x[n]是一个真实的解吗?
,而y[n]?x[n]?ax[n?N],故有z[n]+az[n-N]=
x[n]=z[n]为是其一个解,因此(2.5)式确实是(2.4)式的
x[n]不是一个真实的解,因为序列号也需要计
逆。对于总差分方程,z[n]?算进去,这样就有可能造成一部分数据不真实。 中等题
3.(2.5)式的回声消除系统其单位冲激响应是无限长的。假设N=1000,a?0.5,利用filter,在输入为单位脉冲(由d=[1 zeros(1 4000)]给出)时计算系统的单位冲激响应,并利用这4001个单位冲激响应的样本近似值存入her中。
正在阅读:
信号与系统第四次实验报告04-15
直线与圆大题训练12-03
液体压强练习题(8年级)06-04
最新管径选择与管道压力降计算-单相流(可压缩流体)汇编12-28
PLC技术在高层立体停车库中的应用研究05-13
禹州市房地产市场调研报告03-08
西师大版小学四年级语文说课稿03-27
4.落实《江苏省中小学管理规范》实施细05-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 信号
- 实验
- 报告
- 系统
- 2012年秋季开校长讲话稿
- 发电厂安全检查表
- 建筑产品项目可行性研究报告 - 图文
- 2012证券投资分析章后习题及答案详解(1-9章全)
- 不忘初心,方得始终 - 读金一南《苦难辉煌》有感
- 2013上海新交规 科目二(刘行考点)详情
- 热学思考题题解
- 专题6 植物有效成分的提取 - 图文
- 100测评网高三数学复习综合试卷3
- 运动营养复习题
- 2015年湖北省黄冈市高三三月调考数学试卷(理科)
- 东方文学教学大纲
- 联社机关定岗、定员、定责实施方案
- 五星级客户销量分析(烟草)
- 95年至2011年山大西方经济学试题汇总
- 本科优秀论文参考模板
- 华师大版2015届中考总复习精练精析23 - 尺规作图(2)含答案解析(
- 铭刻在苏通大桥上的誓言 交通海事行业先进典型事迹演讲稿
- 史上最详细的司考通关经验(法考通用) - 司考,来约(万字箴言
- 2014届毕业设计(论文)相关表格材料(定稿)