第1章
例1- 离散时间信号产生。编写程序产生下列基本脉冲
(1)单位脉冲序列:起点ns,终点ne,在n0处有一单位脉冲(ns≤n0≤ne)。
(2)单位阶跃序列:起点ns,终点ne,在n0前为0,在n0处及以后为1(ns≤n0≤ne)。
(3)实数指数序列:
(4)正弦序列:
程序如下:
ns=0;ne=15;n0=5;
n1=ns:ne;x1=[(n1-n0)==0]; %单位脉冲序列
n2=ns:ne;x2=[(n2-n0)>=0]; %单位阶跃序列
n3=ns:ne;x3=(0.9).^n3; %实数指数序列
n4=ns:ne;x4=sin(n4); %正弦序列
subplot(2,2,1),stem(n1,x1);
title('单位脉冲序列')
subplot(2,2,2),stem(n2,x2);
title('单位阶跃序列')
subplot(2,2,3),stem(n3,x3);
title('实数指数序列')
subplot(2,2,4),stem(n4,x4);
title('正弦序列')
运行结果如图1-所示。
图1- 基本脉冲序列
例1- 动态演示信号序列,卷积和的过程
程序如下:
clear
len_x1=20;
len_x2=20;
nx1=0:len_x1-1; %建立x1的时间向量
x1=0.6.^nx1; %建立x1序列
%len_x1=length(nx1); %取x1时间向量的长度
nx2=0:len_x2-1; %x2的时间向量
%len_x2=length(nx2); %取x2的时间向量的长度
x2=ones(1,len_x2); %建立x2序列
lmax=max(len_x2,len_x1); %求最长的序列
if len_x2>len_x1 nx2=0;nx1=len_x2-len_x1; %若x2比x1长,对x1补nx1个0
elseif len_x2<len_x1 nx1=0; nx2=len_x1-len_x2; %若x1比x2长,对x2补nx2个0
else nx2=0;len_x1=0; %若x1和x2同长,不补0
end %长者为补0长度的基础
lt=lmax; %先将x2补得与x1同长,再将两边补最大长度的0
u=[zeros(1,lt),x2,zeros(1,nx2),zeros(1,lt)];
t1=(-lt+1:2*lt); %先将x1补得与x2同长,再将左边补2倍最大长度的0
x1=[zeros(1,2*lt),x1,zeros(1,nx1)]; %将x1左右反折
hx1=fliplr(x1);
N=length(hx1);
y=zeros(1,3*lt); %将y存储单元初始化
for k=0:2*lt %动态演示绘图
p=[zeros(1,k),hx1(1:N-k)]; %使hx1向右循环移位
y1=u.*p; %使输入和翻转移位的脉冲过渡函数逐项相乘
yk=sum(y1); %相加
y(k+lt+1)=yk; %将结果放入数组y
subplot(4,1,1);stem(t1,u);
subplot(4,1,2);stem(t1,p);
subplot(4,1,3);stem(t1,y1);
subplot(4,1,4);stem(k,yk); %通过图形表示每一次卷积的结果
axis([-10,50,0,5]);hold on %在图形窗口上保留每一次运行的图形结果
pause(0.5); %停滞0.5秒
end
第2章
例2- 求以下序列的变换:
,,,
程序如下:
syms a z n w %把字符a z n w定义为基本的符号对象
x1=a^n;X1=ztrans(x1) %求x1的z变换
x2=n-1; X2=ztrans(x2)
x3=(n*(n-1))/3;X3=ztrans(x3)
x4=exp(j*w*n);X4=ztrans(x4)
运行结果如下:
X1 =z/a/(z/a-1)
X2 =z/(z-1)^2-z/(z-1)
X3 =1/3*z*(z+1)/(z-1)^3-1/3*z/(z-1)^2
X4 =z/exp(i*w)/(z/exp(i*w)-1)
例2-求下列函数的的反变换:
,,
程序如下:
syms n z a %把a n z定义为基本的符号对象
X1=z/(z-1); x1=iztrans(X1) %求X1的z的反变换
X2=z/(1-z)^3; x2=iztrans(X2)
X3=z/(z-a)^2; x3=iztrans(X3)
运行结果如下:
x1 =1
x2 =1/2*n-1/2*n^2
x3 =a^n*n/a
例2-已知,试用部分分式法求的反变换,并画。
程序如下:
b=[1,0,0];
a=[1,-3,2];
[r p c]=residuez(b,a); %把b(z)/a(z)展开成部分分式
N=15;
n=0:N-1;
x=r(1)*p(1).^n+r(2)*p(2).^n;
stem(n,x);
title('x(n)');
在命令窗口中将显示:
r =
2
-1
p =
2
1
c =
0
所以多项式分解后表示为:
运行结果如下:
图2- 部分分式法求图
例2- 研究右半平面的实数极点对系统响应的影响。已知系统的零-极点模型分别为:
,,
求这些系统的零极点分布图以及系统的冲激响应,判断系统的稳定性。
程序如下:
z1=[0]';p1=[0.5]';k=1; %输入零极点增益模型零点向量z、极点向量p和增益系数k
[b1,a1]=zp2tf(z1,p1,k); %求系数传递函数(tf)模型中分子、分母多项式的系数向量
matlab傅里叶变换的幅度谱和相位谱subplot(3,2,1),zplane(z1,p1); %由零点和极点向量绘制零极点分布图
ylabel('极点在单位圆内');
subplot(3,2,2),impz(b1,a1,15); %绘制数字系统的冲激响应,取样点数为15
z2=[0]';p2=[1]';
[b2,a2]=zp2tf(z2,p2,k);
subplot(3,2,3),zplane(z2,p2);
ylabel('极点在单位圆上');
subplot(3,2,4),impz(b2,a2,15);
z3=[0]';p3=[2]';
[b3,a3]=zp2tf(z3,p3,k);
subplot(3,2,5),zplane(z3,p3);
ylabel('极点在单位圆外');
subplot(3,2,6),impz(b3,a3,15);
运行结果如下:
图2- 右半平面极点对系统响应影响图
由MATLAB结果图可见,这3个系统的极点均为实数且处于z平面的右半平面。当极点处于单位圆内,系统的冲激响应曲线随着频率的增大而衰减;当极点处于单位圆上时,系统的冲击响应曲线为等幅振荡;当极点处于单位圆外时,系统的冲击响应曲线随着频率的增大而发散。
第3章
例3-已知两个周期序列分别为,,动态演示它们的周期卷积和。
程序如下:
clear
n=0:5; %建立时间向量序列n
xn1=[0,2,1,1,0,0]; %建立xn1的序列主值
xn2=[0,1,1,0,0,0]; %建立xn2的序列主值
N=length(xn1);
nx=(-N:3*N-1);
hxn2=xn2(mod(nx,N)+1); %将xn2序列周期严拓
u=[zeros(1,N),xn2,zeros(1,2*N)]; %按xn2周期严拓后的长度重建主值信号
xn12=fliplr(xn1); %将xn1做左右反折
hxn1=xn12(mod(nx,N)+1); %将xn1反折后的序列周期严拓
N1=length(hxn1);
y=zeros(1,4*N); %将y存储单元初始化
for k=0:N-1 %动态演示开始
p=[zeros(1,k+1),hxn1(1:N1-k-1)]; %使hxn1向右循环移位
y1=u.*p; %使输入和翻转移位的脉冲过渡函数相乘
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论