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

2023-05-16

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

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

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

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

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

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

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

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

即,如果系统的频率响应为

674cf2630d9e26ba4f49cd74de420d5e.gif

36362a0644bf25960949c8f0f5509304.gif经过系统的响应如下:

4d6ccc2783b644b0edb7024a64a7091a.gif

对正弦序列的响应

设输入序列为

e2209957e1f66ed6584b69c0321ff5ca.gif

系统的频率响应为:

14b1022b7ef9b0077ca1b0da1d021b53.gif

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

8f81a3e45ec5fde4147ff38dbcd60b16.png

这就得到了如下结论:

LTI系统对正弦序列的响应是相同频率w0的另一个正弦序列,其幅值被

736d04f6981d3473bf438cb7cf9a101a.gif所倍增,而相位则相移

b7822a4f1d284be5c8b07581cefc75a6.gif,即

1d8de2a021ecebb5aa488b541c5cc721.gif

这个响应称为稳态响应,用

ee9d754047a61a3435db5f834fddde28.gif表示。

案例1

求由脉冲响应

617a357b719cde3a5ce537a936369877.gif所表征的系统频率响应

c678b290c2b647293ba7eeb38a7ba5ef.gif,画出幅度和相位响应。

题解:

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

bf5bce40465b8fa6ccc2ce2cfaebe287.gif

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

99e68fe92a6ebfa6985e3dcf41df4f7e.png

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

案例2

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

ca4a4316c7837e8451fa913f61404520.gif

题解:

在稳态,输入是一常数序列(或者

badbfaed5d3a0d16952d8753a1a37882.gif的正弦序列),然后输出是:

9563b78d13a8bab7bebed007a7903cd8.gif

案例3

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

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

1.求频率响应

35066fc2c2ae9329c8441ca6e2aa1ea6.gif

2.对输入

ab2a63403d172b0876995f824d655759.gif计算并画出稳态响应

e6eb7602064bf60124309296790fad6a.gif

题解:

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

这里直接给出频率响应:

bac63e2bbe7852cfec3fcbaa9b3bc218.gif

2.在稳态下,输入是

770ea9ca2f8b4fa2231faf17b76ee29a.gif,其频率为

3909bb43858268e823b6e2caf70b0e1f.gif,系统的频率响应应该是:

c6608a2870ad09735399406916e56b4f.gif

因此,

8e9fa73afa1798b0236445f6b1adf69d.gif

也就是说,在输出端该正弦被放大了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)');

a45763e636c25dc4aca61273b28fe41f.png

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

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

本文同步分享在 博客“李锐博恩”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

系统稳态响应MATLAB,【 MATLAB 】使用 MATLAB 求某输入的稳态响应 的相关文章

随机推荐