【 MATLAB 】使用 MATLAB 求某输入的稳态响应

xiaoxiao2025-08-11  27

稳态响应是在本科,更确切地说是在考研时候经常接触的,例如电路基础、信号与系统中就常有稳态响应这个词。

今天在补习MATLAB数字信号处理时,突然碰到稳态响应,一脸懵逼,感觉并不理解什么是稳态响应了,也许之前也没有懂过吧。

百度百科对概念进行了解释:

稳态响应是指当足够长的时间之后,系统对于固定的输入,有了一个较为稳定的输出。

在某一输入信号的作用后,时间趋于无穷大时系统的输出状态称为稳态。

下面就一起来体会这个稳态响应吧。


LTI 系统对复指数信号的响应

好久之前写过的一篇博文上:线性时不变系统(LTI)对复指数信号的响应(数字信号处理的特征值与特征函数)

就已经说明了线性时不变系统对于复指数信号的响应,简单地说,输入序列经过线性时不变系统之后的响应就是在该频率处的系统频率响应乘以该复指数信号。

即,如果系统的频率响应为,经过系统的响应如下:


对正弦序列的响应

设输入序列为 

系统的频率响应为: 

正弦序列可以表示成复指数序列之和,这样就可以利用LTI系统对复指数序列的响应,求得LTI系统对正弦序列的响应。如下:

这就得到了如下结论:

LTI系统对正弦序列的响应是相同频率w0的另一个正弦序列,其幅值被所倍增,而相位则相移,即

这个响应称为稳态响应,用表示。


案例1

求由脉冲响应所表征的系统频率响应,画出幅度和相位响应。

题解:

很简单,根据DTFT的公式就可以直接求出该脉冲响应的离散时间傅里叶变换:

MATLAB脚本如下:

clc clear close all k = 0:500; w = (pi/500)*k; X = exp(j*w)./( exp(j*w) - 0.9*ones(1,501) ); magX = abs(X); angX = angle(X); realX = real(X); imagX = imag(X); subplot(2,1,1); plot(w/pi,magX); title('Magnitude Part'); xlabel('w/pi');ylabel('Magnitude'); grid subplot(2,1,2); plot(w/pi,angX); title('Angle Part'); xlabel('w/pi');ylabel('Radians'); grid


系统的频率响应求出来了,那么现在的这个案例就是给定一个输入,求其稳态响应。

案例2

案例1的系统,输入是0.1u(n),求稳态响应

题解:

在稳态,输入是一常数序列(或者的正弦序列),然后输出是:


案例3

一LTI系统由下面的差分方程表征:

y(n)=0.8y(n-1)+x(n)

1.求频率响应

2.对输入计算并画出稳态响应

题解:

1.由差分方程求解频率响应太好求了,分子分母系数都给出了,可以直接写出频率响应,如果在z变换中成为有理转移函数。

这里直接给出频率响应:

2.在稳态下,输入是,其频率为,系统的频率响应应该是:

因此,

也就是说,在输出端该正弦被放大了4.0928倍,移位了3.42个样本。

下面用MATLAB脚本验证:

clc clear close all b = 1; a = [1,-0.8]; n = [0:100]; x = cos(0.05*pi*n); y = filter(b,a,x); subplot(2,1,1) stem(n,x); title('Input sequence') xlabel('n');ylabel('x(n)'); subplot(2,1,2) stem(n,y); title('Output sequence'); xlabel('n');ylabel('y(n)');

可见,幅度和相位都变化了。

最后,关于filter函数的介绍见博文:

【 MATLAB 】filter 函数介绍(一维数字滤波器)

 

转载请注明原文地址: https://www.6miu.com/read-5034682.html

最新回复(0)