数字信号处理-原理与实践(方勇)习题问题详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习 题
1-1 有一个连续信号)2cos()(ψπ+=ft t x a ,式中Hz f 20=,2
π
ψ=
,
(1) 求出)(t x a 的周期;
(2) 用采样间隔s T 02.0=对)(t x a 进行采样,写出采样信号)(ˆt x
a 的表达式; (3) 画出对应)(ˆt x
a 的时域离散信号(序列))(n x 的波形,并求出)(n x 的周期。
解:(1))(t x a 的周期是
s f
T a 05.01
==
(2)∑∞
-∞
=-+=n a nT t fnT t x
)()2cos()(ˆδψπ
∑∞
-∞
=-+=
n nT t nT )()40cos(δψπ
(3))(n x 的数字频率为
πω8.0=,
2
5
2=
ω
π
周期5=N 。
)28.0cos()(ππ+=n n x ,画出其波形如题1-1图所示。
题1-1图 1-2 设)sin()(t t x a π=,()()sin()a s s x n x nT nT π==,其中s T 为采样周期。
(1))(t x a 信号的模拟频率Ω为多少? (2)Ω和ω的关系是什么?
(3)当s T s 5.0=时,)(n x 的数字频率ω为多少? 解:(1))(t x a 的模拟频率s rad /π=Ω。
(2)Ω和ω的关系是:s T ⋅Ω=ω。
(3)当s T s 5.0=时,rad πω5.0=。
1-3 判断下面的序列是否是周期的,若是周期的,确定其周期。
(1))8
7
3
cos()(π
π-
=n A n x ,A 为常数;
(2))
81
()(π-=n j e n x 。
解: (1)πω73
=
,3142=ωπ,这是有理数,因此是周期序列,周期是14=T ; (2)81=ω,πω
π
162=,这是无理数,因此是非周期序列。
1-4 研究一个线性时不变系统,其单位脉冲响应为指数序列)()(n u a n h n =,10<<a 。
对于矩阵输入序列,
1,01
()0
N n N R n ≤≤-⎧=⎨
⎩,其他 求出输出序列,并用MATLAB 计算,比较其结果。
分析:输入)()(n R n x N =,线性时不变系统的输出等于输入序列与单位脉冲响应的卷积,用公式表示为∑∞
-∞
=-⋅=
*=k k n h k x n h n x n y )()()()()(
为了计算输出序列的第n 个值,必须计算出乘积)()(k n h k x -⋅,并将所得到的序列值相加。
解:输出序列∑∞
-∞
=-⋅=
*=k k n h k x n h n x n y )()()()()(可以分成三种情况来求解:
(1) 当0<n 时,由于)(k n h -和)(k x 的非零取样互不重叠,因此0)(=n y 。
(2) 当10-≤≤N n 时,从0=k 到n k =,)(k n h -和)(k x 的非零取样值有重叠,
因此 ∑∑=-∞-∞
==-⋅=
n
k k n k a k n h k x n y 0
)()()(
a
a a a a
n n n
--=--=+---111111
1
(3) 当1-≥N n 时,)(k n h -和)(k x 重叠的非零取样值从0=k 到1-=N k ,因此
∑∑-=--==-⋅=
1
1
)()()(N k k
n N k a k n h k x n y
11
)11(11+-----=--=N n n N n
a a
a a a a
所以 1
10,01(),0111(),11n n
n N n a y n n N a a a
N n a +-+⎧⎪<⎪
-⎪=≤≤-⎨-⎪
⎪--<⎪-⎩
利用MATLAB 求其响应,程序如下: a=1/2; N=20; n=0:N-1; c=[1]; d=[1 -a]; x=ones(1,N); y=filter(c,d,x); stem(n,y);
ylabel('y(n)');
题1-4图 输出相应序列()y n
1-5 设)()(n u a n x n =,)1()()(1--=-n u ab n u b n h n n ,求)()()(n h n x n y *=。
解: a
z z
z X -=
)(,a z > b
z a
z b z a b z z z H --=---=)(,b z >
所以, b
z z
z H z X z Y -==)()()(,b z >
其Z 反变换为
)()]([)()()(1n u b z Y n h n x n y n =Z =*=-
显然,在a z =处,)(z X 的极点被)(z H 的零点所抵消,如果a b <,则)(z Y 的收敛域比)(z X 与)(z H 收敛域的重叠部分要大。
1-6 求下列序列的Z 变换及其收敛域,并用MATLAB 画出零极点示意图。
(1)双边指数序列n
a
n x =)(,01a <<;
(2)正弦调制序列)()cos()(0n u n Ar n x n φω+=,10<<r 。
解:(1)双边指数序列可写为
,0(),0
n
n
a n x n a
n -⎧<=⎨≥⎩
其Z 变换为
1
10
1
1()1n n
n n
n n n n n X z a z
a
z
a z az ∞
-∞
----==-∞
==+
=+-∑∑∑ 2110111(1)11111(1)()
n n
n z a a z az az az az z a ∞
--=-=+-=+-=-----∑
n
a n x =)(,10<<a 是一个双边序列,其收敛域为1a z a <<表示极点,极点为
z a =,a 1,零点为0z =。
其极点、零点图如图所示,图中⨯表示极点,○表示零点。
利用MATLAB 画出其零极点,如题1-6图(a)所示:
a=3; y=1-a*a; b=[0 y 0]; a=[-a y -a];
zplane(b,a);
题1-6图(a) 零极点图
(2))(2
)()cos()()
()(000n u e e Ar
n u n Ar n x n j n j n
n
φωφωφω+-++=+=, 10<<r
我们将其分解为标准的指数序列形式,然后根据Z 变换的求和定义式求得其对应的Z 变换、收敛域并画出零极点图。
其Z 变换为
00()()1
00
()cos()2j n j n n
n
n
n
n n e e X z Ar n z
A r z ωφωφωφ+-+∞
---==-∞
+=+=∑∑
001011122
0cos cos()11
2(1)2(1)12cos j j j j A Arz A A e e re z re z rz r z ϕϕωωϕωϕω--------=+=
---+ 收敛区域为z r >,极点为0
j z re
ω=,0
ωj re
-,零点为0z =,φφωcos )cos(0-r 。
其对应的零极点图如题1-6图所示。
利用MATLAB 画出其零极点,如题1-6图(b)所示: A=1; r=1; w0=4*pi; w=2*pi;
x=2*r*cos(w0); y=A*r*cos(w0-w); b=[A*cos(w) -y ]; a=[1 -x r*r];
zplane(b,a);
题1-6图(b) 零极点图
讨论 通常将正弦序列信号展开为两个基本复指数序列和或差的形式,然后按照Z 变换定义式求起对应的Z 变换和收敛域。
对于Z 变换表达式可表示为等比级数和的形式的序列,其Z 变换的收敛域是保证等比小于1,如本例中要保证0
1
1j q z re
ω-=<,可
得收敛域为z r
>。
ωj
re
题1-6图零极点示意图
1-7 已知
,0
()
,1
n
n
a n
x n
b n
⎧≥
=⎨
-≤-
⎩
,求其Z变换及其收敛域。
并用MATLAB求解。
解:这是一个双边序列,其Z变换为
n
n
n
n
n
n
n
n z
b
z
a
z
n
x
z
X-
-
-∞
=
∞
=
-
∞
-∞
=
-∑
∑
∑-
=
=
1
)
(
)
(
b
z
z
a
z
z
bz
az-
+
-
=
-
+
-
=
-
-1
11
1
1
1
)
)(
(
)
2(
b
z
a
z
b
a
z
z
-
-
-
-
=,b
z
a<
<
MATLAB求解程序如下:
F=ztrans(sym('a^k+b^k'))
结果为:F =- z/(a - z) - z/(b - z)
1-8求
1
12
5
()
16
z
X z
z z
-
--
=
+-
,23
z
<<的逆Z变换,并用MATLAB求解。
解:由部分分式展开可得
11
11
()
1213
X z
z z
--
=-
-+
,
因为23
z
<<。
所以得
20
()
(3)0
n
n
n
x n
n
⎧≥
=⎨
-<
⎩
MATLAB求解:
程序如下:
syms k z;
Fz=5*z/(z^2+z-6);
fk=iztrans(Fz,k)
运行结果:
fk =2^k - (-3)^k
1-9判断系统(1)∑
=
=
n
m
m
x
n
y
)
(
)
(,(2))
(
)
(n
nx
n
y=是否为时不变系统,并利用MATLAB
验证。
解:(1)令输入为)(0n n x -,输出为00
()[()]()n
m Y n T x n n x m n ==-=
-∑
而0()y n n -=
00
()()n n m x m Y n -=≠∑,所以系统是时变的。
MATLAB 验证:
令 ()(1)2()(1)x n n n n δδδ=+++-,01n = 程序如下:
x=[1 2 1];n0=1;n=-1:1;
x0=[2 1];%x0为x 横坐标非负的值 y=cumsum(x0); Y=cumsum(x);
subplot(3,2,1);stem(n,x);
xlabel('n');ylabel('x(n)');title('输入');axis([-1,3,0,4]); subplot(3,2,2);n=0:1;stem(n,y);
xlabel('n');ylabel('y(n)');title('输出');axis([-1,3,0,4]); subplot(3,2,3);n=0:2;stem(n,x);
xlabel('n');ylabel('x(n-n0)');title('输入');axis([-1,3,0,4]); subplot(3,2,5);n=0:2;stem(n,Y);
xlabel('n');ylabel('Y(n)');title('输出');axis([-1,3,0,4]); subplot(3,2,4);n=1:2;stem(n,y);
xlabel('n');ylabel('y(n-n0)');title('输出');axis([-1,3,0,4]);
-1
12
3
n x (n )
输入
-1
12
3
024n y (n )
输出
-1
12
3
024n x (n -n 0)
输入
-1
12
3
024n
Y (n )
输出
-1
12
3
024n
y (n -n 0)
输出
题1-9图(a) 时变性验证
(2)令输入)(0n n x -,输出00()[()]()Y n T x n n nx n n =-=- 而000()()()()y n n n n x n n Y n -=--≠,所以系统为时变的。
MATLAB 验证:
令()(1)2(2)(3)x n n n n δδδ=-+-+-,01n = 程序如下:
x=[1 2 1];n0=1; for i=1:length(x) y(1,i)=i*x(1,i); end
for i=1+n0:length(x) X(1,i+n0)=x(1,i); end
for i=1+n0:length(x)+n0 y_(1,i)=(i-n0)*x(1,i-n0); end
for j=1:length(x) Y(1,j)=j*X(1,j); end
subplot(3,2,1);n=1:3;stem(n,x);
xlabel('n');ylabel('x(n)');title('输入');axis([0,4,0,6]); subplot(3,2,2);stem(n,y);
xlabel('n');ylabel('y(n)');title('输出');axis([0,4,0,6]); subplot(3,2,3);n=1:4;stem(n,x_);
xlabel('n');ylabel('x(n-n0)');title('输入');axis([0,4,0,6]); subplot(3,2,5);stem(n,Y);
xlabel('n');ylabel('Y(n)');title('输出');axis([0,4,0,6]); subplot(3,2,4);n=1:4;stem(n,y_);
xlabel('n');ylabel('y(n-n0)');title('输出'); axis([0,4,0,6]);
24
6n x (n )
输入
n y (n )
输出
246n x (n -n 0)
输入
246n
Y (n )
输出
n
y (n -n 0)
输出
题1-9图(b) 时变性验证
1-10 利用MATLAB 验证例题1-27(1)中的系统是否为线性时不变系统。
解:令输入为)(0n n x -,则输出为00()[()]()Y n T x n n ax n n b =-=-+,而
b n n ax n n y +-=-)()(00,所以0()()y n n Y n -=,系统为时不变系统。
又因为 11212()[()()][()()]Y n T px n qx n a px n qx n b =+=++ 而,21212()()()[()][()]Y n py n qy n p ax n b q ax n b =+=+++2()Y n ≠
所以系统为非线性系统。
MATLAB 验证:
a : 时变性验证:令()()2(1)3(2)x n n n n δδδ=+-+-,=1a ,2
b =,01n k ==
程序如下:
a=1;b=2;p=2;q=3;n0=1; x=[1 2 3]; y=a*x+b;
for i=1:size(x,2) x_(1,i+n0)=x(1,i); y_2(1,i+n0)=y(1,i); end
x_=[zeros(1:n0),x_(n0+1:end)]; y_1=a*x_+b;
y_1=[zeros(1:n0),y_1(n0+1:end)]; subplot(3,2,1);n=0:2;stem(n,x);
xlabel('n');ylabel('x(n)');title('输入');axis([0,4,0,6]); subplot(3,2,2);n=0:3;stem(n,x_);
xlabel('n');ylabel('x(n-n0)');title('输入');axis([0,4,0,6]); subplot(3,2,3);n=0:2;stem(n,y);
xlabel('n');ylabel('y(n)');title('输出');axis([0,4,0,6]); subplot(3,2,4);n=0:3;stem(n,y_1);
xlabel('n');ylabel('Y(n)');title('输出');axis([0,4,0,6]); subplot(3,2,5);n=0:3;stem(n,y_2);
xlabel('n');ylabel('y(n-n0)');title('输出');axis([0,4,0,6]);
n x (n )
输入
n x (n -n 0)
输入
01
234
n y (n )
输出
n
Y (n )
输出
n
y (n -n 0)
输出
题1-10图(a) 时变性验证
b : 线性验证:令1()()2(1)3(2)2(3)x n n n n n δδδδ=+-+-+-,2()3()x n n δ=
2(1)(2)(3)n n n δδδ+-+-+-,=1a ,2b =,2p =,1q =
程序如下: x1=[1 2 3 2]; x2=[3 2 1 1];
a=1;b=2;p=2;q=1;n=0:3; y1=a*x1+b; y2=a*x2+b;
Y1=a*(x1*p+q*x2)+b; Y2=p*y1+q*y2;
subplot(1,2,1);stem(n,Y1);
xlabel('n');ylabel('Y1(n)');axis([0,3,0,14]); subplot(1,2,2);stem(n,Y2); xlabel('n');ylabel('Y2(n)');
n
Y 1(n )
n
Y 2(n )
题1-10图(b) 线性性验证
1-11 已知系统函数()1N
H z z
-=-,试用MATLAB 画出该系统的幅频特性。
解: 利用MATLAB 中的freqz()函数可以画出该系统的幅频特性曲线,如题1-11图所示。
N
取10。
MATLAB 程序如下: N=10;
b=[1 zeros(1,N-1) 1]; a=[1 zeros(1,N)]; OMEGA=0:pi/150:2*pi; H=freqz(b,a,OMEGA); plot(OMEGA,abs(H));
题1-11图 幅频响应特性
1-12 一般的滑动平均由下列方程定义
∑-==-++=2
1
)(11
)(21M M k k n x M M n y
++-+++++ )1()([1
1
1121M n x M n x M M
)]()1()([2M n x n x n x -++-+
该系统计算输出序列的第n 个样本时是将其作为输入序列第n 个样本前后的1(M +
2M 1)+个样本的平均。
求:(1)该系统的冲激响应)(n h ; (2)求该系统的频率响应;
(3)对01=M ,42=M ,求)(ωj e H 和)(arg ωj e H ,并用MATLAB 画出其图形。
解: (1)∑-=-++=2
1
)(11
)(21M M k k n M M n h δ
⎪⎩
⎪
⎨⎧
≤≤-++=其他,0,112121M n M M M (2)因为 ⎪⎩
⎪
⎨⎧
≤≤-++=其他,0,11)(2121M n M M M n h
因此频率响应就是
∑--++=2
1
11
)(21M M n j j e M M e
H ωω
利用等比级数求和公式 ∑=+--=2
1
2111
N N n N N k
a a a a
可以得到:
)2/sin(]
2/)1(sin[1111)(212
12/)()1(211221ωωωωωωω
++++=--++=---+-M M M M e e e e M M e
H M M j j M j M j j (3)当01=M ,42=M 时,
)
2/sin()
2/5sin(51)(ωωω=
j e H ,ωω2)(arg -=j e H
利用MATLAB 画出其频率响应图:
由 12(1)
121()11j M j M j j e e H e M M e
ωωω
ω
-+--=++- 得 12(1)
1
121()11M M z z H z M M z
-+--=++- 所以MATLAB 程序如下:
M1=0; M2=4; X=1/(M1+M2+1); b=[X zeros(1,M2) -X]; a=[1 -1];
OMEG=-pi:pi/100:pi; H=freqz(b,a,OMEG);
subplot(2,1,1),plot(OMEG,abs(H));
subplot(2,1,2),plot(OMEG,180/pi*unwrap(angle(H)));
运行结果如题1-12图所示:
题1-12图 频率响应曲线图
1-13 设某线性时不变离散系统的差分方程为)()1()(3
10
)1(n x n y n y n y =++-
-,试求它的 单位脉冲响应。
并讨论其因果性和稳定性,并用MATLAB 计算,与理论值进行比较。
解:)()1()(3
10
)1(n x n y n y n y =++-
- 对上式两边取 Z 变换,得到:
)()()(3
10
)(1z X z zY z Y z Y z =+-
-
)
3)(3
1(13103101)(2
1--=+-=+-=
-z z z
z z z z z z H
⎪⎪⎪⎪⎭
⎫
⎝⎛---⨯=--11311131183z z
极点:3
1
1=
p z ,32=p z 当ROC :3>z 时,系统因果不稳定,)(]33[8
3
)(n u n h n n --⨯=
; 当ROC :
331<<z 时,系统非因果稳定,())](3)1(3[8
3)(n u n u n h n n
--+--⨯=; 当ROC :31<
z 时,系统非因果不稳定,)1(]33[8
3
)(---⨯=-n u n h n n 。
1-14 给定下述系统的差分方程,试判定系统是否是因果、稳定系统,并说明理由,如果是
稳定系统,通过MATLAB 画出其零极点图。
(1)∑-=-=
1
)(1
)(N k k n x N
n y
(2))1()()(++=n x n x n y (3))()(0n n x n y +=
解: (1)只要1≥N ,该系统就是因果系统,因为输出只与n 时刻的和n 时刻以前的输入
有关。
如果M n x ≤)(,()y n M ≤,因此系统是稳定系统。
MATLAB 画出零极点,如题1-14图(a)所示: N0=100; X=N0-1;
b=[1 zeros(1,X-1) -X]; a=[1 -1]; zplane(b,a);
题1-14图(a) 零极点示意图
(2)该系统是非因果系统,因为n 时刻的输出还和n 时刻以后的输入有关。
如果
M n x ≤)(,则M n x n x n y 2)1()()(≤++≤,因此系统是稳定系统。
MATLAB 画出零极点图如下: b=[1 1]; a=[1 0]; zplane(b,a);
题1-14图(b) 零极点示意图
(3)系统是非因果系统,因为n 时刻输出和n 时刻以后的输入有关。
如果M n x ≤)(,
()y n M ≤,因此系统是稳定的。
1-15 求下列单位脉冲响应的Z 变换及收敛域,用MATLAB 画出零极点分布图。
(1)、(0.2
)()n
u n (2)、0()j n
e u n ω (3)、0c
o s ()()nun ω
解:(1)由Z 变换的公式可得其Z 变换为:
1110.2z --=0.2
z
z -,0.2z >。
利用MATLAB 画出其零极点,程序及运行结果如题1-15图(a)所示: b=[1 0]; a=[1 -0.2]; zplane(b,a);
题1-15图(a) 零极点示意图
(2)利用Z 变换公式可得:其Z 变换为
1
11j e
z
ω--, 0j z e ω>
MATLAB 画出零极点如下题1-15图(b)所示: w0=2*pi; x=exp(j*w0); b=[1]; a=[1 -x]; zplane(b,a);
题1-15图(b) 零极点示意图
(3) 因为000cos()2j n j n e e n ωωω-+=,由(2)知0()j n
e u n ω的Z 变换为01
11j e z ω--
0()j n
e
u n ω-的Z 变换为
1
11j e
z
ω---
所以得出0cos()()n u n ω的变换经化简得:10
12
01cos 12cos z z z ωω-----+ , 1z >
利用MATLAB 画出其零极点如下题1-15图(c)所示: w0=pi/4;
b=[1 -cos(w0)]; a=[1 -2*cos(w0) 1]; zplane(b,a);
题1-15图(c) 零极点示意图
1-16 已知系统函数如下:432(8)(2)
()2 2.90.1 2.3 1.5
z z H z z z z z +-=
-++-,用MATLAB 编程判断
系统是否稳定. 解: MATLAB 程序如下:
A=[2 -2.9 0.1 2.3 -1.5] P=roots(A); M=max(abs(P));
if (M<1) disp('系统稳定') else disp('系统不稳定') end
运行结果如下: A =
2.0000 -2.9000 0.1000 2.3000 -1.5000 系统稳定
1-17 设一因果LTI 系统的差分方程为
()2(1)3(2)()4(1)5(2)6(3)y n y n y n x n x n x n x n --+-=+-+---
并且已知初始条件为(1)1y -=-,(2)1y -=,输入()0.2()n x n u n =,利用MATLAB 求系
统的输出()y n 。
解:%用迭代法求取10点数据
y=zeros(1,10); i=1:10;
y(1)=-2-3+1;
y(2)=2*y(1)+3+1+4;
y(3)=2*y(2)-3*y(1)+1+5+4*0.2; y(4)=2*y(3)-3*y(2)+4*0.2^2; for n=5:10
y(n)=2*y(n-1)-3*y(n-2)+4*0.2^(n-2); end
stem(i-1,y);xlabel('n');ylabel('y(n)'); 结果如题1-17图所示:
题1-17图 输出响应()y n
1-18 一系统的差分方程描述如下:
()0.81(2)()(2)y n y n x n x n +-=--
试确定该系统的频率响应,并求出输入序列为()1010cos()2
n x n π
=++10cos()n π的稳态输出。
解:由差分方程可得出221()0.81z H z z -=+,221()10.81j j j e H e e ωω
ω
---=+
其特征根为120.9j z =±、,所以该系统为一稳定系统。
当输入序列为()1010cos()10cos()2
n x n n π
π=++时,由稳态输出的定义,我们可以计算出:0
()0j H e =,2
()10.53j
H e
π=,()0j H e π=。
所以其稳态输出为
()10.53cos(
)2
n y n π= 用MATLAB 画出其频率响应: 程序如下: b=[1 0 -1]; a=[1 0 0.81];
OMEG=-pi:pi/100:pi; H=freqz(b,a,OMEG);
subplot(2,1,1),plot(OMEG,abs(H));
subplot(2,1,2),plot(OMEG,180/pi*unwrap(angle(H))); 运行结果:
题1-18图 频率响应曲线
1-19 考虑一个三阶系统
()0.4(1)0.2(2)0.8(3)5()y n y n y n y n x n ----+-=
输入)()(n u n x =,初始状态(1)2y -=,(2)4y -=和(3)5y -=,利用状态方程方法求出)(n y 。
解: 定义)3()(1-=n y n q ,)2()(2-=n y n q ,)1()(3-=n y n q ,差分方程可以写为如
下状态方程的形式:
0100(1)001()0()0.80.20.45q n q n x n ⎡⎤⎡⎤⎢⎥⎢⎥+=+⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦
[]()0.80.20.4()5()y n q n x n =-+ 可计算出1(0)5q =,2(0)4q =,3(0)2q =。
其MATLAB 程序如下:
%状态方程求解系统响应演示程序 A=[0 1 0;0 0 1;-0.8 0.2 0.4]; B=[0;0;5];
C=[-0.8 0.2 0.4];
D=[5];
q0=[5;4;2];
n=0:1:25;
X=[ones(size(n))]';
[Y, s]=dlsim(A,B,C,D,X,q0); stem(n,y);
xlabel('n');
ylabel('y(n)');
grid;
题1-19图 输出响应()y n。