H = freqs(b,a,w):在指定的频率范围内计算系统的频率响应特性。在使用这种形式的freqs函数时,要在前面先指定频率变量w的范围。例如在语句H = freqs(b,a,w)之前加上语句:w = 0:2*pi/256:2*pi。
Hm = abs(H):求模数,即进行Hm?H运算,求得系统的幅度频率响应,返回值存于Hm之中。
phi = angle(H):求相位频率相应特性;
tao = grpdelay(b,a,w):计算系统的相频响应所对应的群延时。 下面举例说明如何利用上述函数计算并绘制系统频率响应特性曲线的编程方法。
例5-2 假设给定一个连续时间LTI系统,描述其输入输出之间的关系的微分方程为
d2y(t)dy(t) ?3?2y(t)?x(t)
dt2dt编写MATLAB范例程序,绘制系统的幅频响应、相频响应、频率响应的实部和频率响应的虚部,如图5-6所示。程序如下:
% 计算并绘制系统频率响应 b = [1]; % 系统函数分子系数 a = [1 3 2]; % 系统函数分母系数 [H,w] = freqs(b,a); % 计算频率响应 H Hm = abs(H); %计算幅频响应Hm phai = angle(H); % 计算相频响应 phai subplot(121)
plot(w,Hm, 'linewidth', 3),
72
grid on, title('幅频响应'), xlabel('频率(rad/sec)') subplot(122) plot(w,phai),
grid on, title('相频响应'), xlabel('频率(rad/sec)')
(2)系统响应的频域求解方法
下面举例说明系统响应的频域求解方法。 例5-3 如图5-1(a)所示的RC电路,
1)若输入信号为门函数(如图5-7(b)),求系统的响应; 2)若输入信号为周期矩形脉冲(如图5-7(c)),求系统的响应。
Rf(t)C+f (t)-+y(t)-1 t-0.500.5
(b)
(a)
图5-1 RC电路及输入信号
Matlab程序如下:
% RC电路的频率响应为H(j?)?1时,系统的幅频响应。 ?1,10,100RC1(RC),首先会出
j??1(RC)RC_n=[1 0.1 0.01]; N=length(RC_n); omega=0:0.01:100*pi;
73
for k=1:N RC=RC_n(k);
H=(1/RC)./(j*omega+1/RC); subplot(N,1,k),plot(omega,abs(H)); end
该RC电路是一个低通滤波器,截止频率和带宽都随着1(RC)的增大而增大。
% 输入信号为门函数且RC_n=[1 0.1 0.01]; N=length(RC_n); omega=-10*pi:0.01:10*pi;
F=sinc(omega/(2*pi)); %输入信号的频谱 subplot(N+1,1,1),plot(omega,abs(F)); for k=1:N RC=RC_n(k);
H=(1/RC)./(j*omega+1/RC);
Y=F.*H; %输出信号的频谱 subplot(N+1,1,k+1),plot(omega,abs(Y)); end
随着1(RC)的增大,输出信号的频谱越来越接近输入信号的频谱,这是因为随着带宽的增加,允许更多的高频分量通过。下面再从时域这个角度来观察。
74
1?1,10,100时,RC电路的输出信号。 RCRC_n=[1 0.1 0.01]; M=length(RC_n); t=-2:0.01:4;
f=u(t,0.5)-u(t,-0.5); subplot(M+1,1,1),plot(t,f); domega=0.01;
omega=-10*pi:0.01:10*pi; F=sinc(omega/(2*pi)); for m=1:M RC=RC_n(m);
H=(1/RC)./(1j*omega+1/RC); Y=F.*H;
y=Y*exp(1j*omega'*t).*domega./(2*pi); subplot(M+1,1,m+1),plot(t,abs(y)); end 其中
function [y,t]=u(t,tau) y=double(t>=-tau);
随着1(RC)的增大,输出信号的波形越来越接近输入信号的波形,输出波形的上升和下降的时间缩短,由于高频成分增多,在波形的顶
75
部和底部震荡更多。 (1)
系统函数的意义及其表达式
为了利用系统函数的零极点分布来分析系统特性,首先说明如何求出系统函数的零极点,Matlab提供的求系统的零极点的函数有 roots():利用多项式求根函数来确定系统函数的零极点位置; roots(a):求极点位置,a为系统函数H(s)分母多项式所构成的系数向量;
roots(b):求零点位置,b为系统函数H(s)分子多项式所构成的系数向量;
zero(sys):求系统sys的零点 pole(sys):求系统sys的极点
[z, p, k] = tf2zp(b, a):求系统函数的零极点,返回值z为零点行向量,p为极点行向量,k为系统传递函数的零极点形式的增益。b为系统函数分子多项式的系数向量,a为系统函数分母多项式系数向量。
pzmap(sys):画出系统的零极点图。
1)零极点分布与系统冲激响应时域特性的关系
s2?2s?0.8例5-4 已知系统函数为H(s)?3,试用Matlab画出系统2s?2s?2s?1的零极点分布图、冲激响应波形、阶跃响应波形、幅频响应曲线和相频响应曲线,并判断系统的稳定性。
Matlab程序如下: num=[1 -2 0.8]; den=[1 2 2 1];
76