MATLAB信号处理之离散时间系统的时域分析

1、零状态响应
在MATLAB中,函数filter可以用来对差分方程在指定时间范围内的输入序列所产生的响应进行求解,该函数调用方法如下
y=filter(b,a,x)
其中,x为输入的离散序列,y为输出的离散序列,y的长度与x的长度一样,b与a分别为差分方程右端与左端的系数向量
例:
已知y(k)-0.35y(k-1)+1.5y(k-2)=f(k)+f(k-1),f(k)=((1/2)^k)u(k),其中u(k)代表阶跃序列
代码如下

a=[1 -0.35 1.5];   %方程左端的系数向量
b=[1 1];           %方程右端的系数向量
t=0:20;            %指定时间序列
x=(1/2).^t;        %输入激励
y=filter(b,a,x);   %求解零状态响应
subplot(121)
stem(t,x)
title('输入序列')
grid on
xlabel('n')
ylabel('h(n)')
subplot(122)
stem(t,y)
xlabel('n')
ylabel('h(n)')
title('响应序列')
grid on


2、单位冲激响应
在MATLAB中,函数impz用于求解离散时间系统单位冲激响应,其调用格式为h=impz(b,a,k)
其中,a,b分别是差分方程左右端的系数向量,k表示输出序列的取值范围(可省),h就是系统单位冲激响应(如果没有输出参数,直接调用impz(b,a,k),则MATLAB将会在当前绘图窗口自动画出系统单位冲激响应的图形)

k=0:10;                %指定时间序列
a=[1 6 4];             %差分方程左端系数向量
b=[1 3];               %差分方程右端系数向量
h=impz(b,a,k);         %求解单位冲激响应
stem(k,h);
xlabel('n')
ylabel('h(n)')
title('单位冲激响应')
grid on


3、卷积和运算
在MATLAB中,conv函数除了用于计算连续时间系统的卷积积分外,他还可以用于计算离散序列的卷积和,其调用形式为
c=conv(a,b)
其中,a,b分别为待卷积的两个序列的向量表示,c是卷积结果。向量c的长度为向量a、b的长度之和减1,即length(c)=length(a)+length(b)-1

x=[1,3,5,7];     %序列x
y=[1,1,1,1];     %序列y
z=conv(x,y)      %求两个序列的卷积和
subplot(131);
stem(0:length(x)-1,x);
ylabel('x[n]');
xlabel('n');
grid on
subplot(132)
stem(0:length(y)-1,y);
ylabel('y[n]');
xlabel('n');
grid on
subplot(133)
stem(0:length(z)-1,z);
ylabel('z[n]');
xlabel('n')
grid on


猜你喜欢

转载自blog.csdn.net/qq_36554582/article/details/81700335