利用MATLAB求系统响应

例子

给定一个低通滤波器的差分方程为:在这里插入图片描述

输入信号:
在这里插入图片描述
在这里插入图片描述

a) 分别求出系统对x1和x2的响应序列,并画出其波形。
b) 求出系统的单位冲响应,画出其波形。

(3)给定系统的单位脉冲响应为:
在这里插入图片描述
在这里插入图片描述

用线性卷积法分别求系统h1(n)和h2(n)对的输出响应,并画出波形。
(4)给定一谐振器的差分方程为:在这里插入图片描述
令b
,谐振器的谐振频率为0.4rad。
a) 用实验方法检查系统是否稳定。输入信号为时,画出系统输出波形。
b) 给定输入信号为:
在这里插入图片描述

   求出系统的输出响应,并画出其波形

程序清单

系统响应及系统稳定性
%======内容1:调用filter解差分方程,由系统对u(n)的响应判断稳定性======
A=[1,-0.9];B=[0.05,0.05];  %系统差分方程系数向量B和A
x1n=[1 1 1 1 1 1 1 1 zeros(1,50)];  %产生信号x1(n)=R8(n)
x2n=ones(1,128);    %产生信号x2(n)=u(n)
hn=impz(B,A,58);    %求系统单位脉冲响应h(n)
subplot(2,2,1);y='h(n)';tstem(hn,y);    %调用函数tstem绘图
title('(a) 系统单位脉冲响应h(n)');box on
y1n=filter(B,A,x1n);    %求系统对x1(n)的响应y1(n)
subplot(2,2,2);y='y1(n)';tstem(y1n,y);
title('(b) 系统对R8(n)的响应y1(n)');box on
y2n=filter(B,A,x2n);    %求系统对x2(n)的响应y2(n)
subplot(2,2,4);y='y2(n)';tstem(y2n,y);
title('(c) 系统对u(n)的响应y2(n)');box on
%===========内容2:调用conv函数计算卷积==================
x1n=[1 1 1 1 1 1 1 1 ];  %产生信号x1(n)=R8(n)
h1n=[ones(1,10) zeros(1,10)];
h2n=[1 2.5 2.5 1 zeros(1,10)];
y21n=conv(h1n,x1n);
y22n=conv(h2n,x1n);
figure(2)
subplot(2,2,1);y='h1(n)';tstem(h1n,y);    %调用函数tstem绘图
title('(d) 系统单位脉冲响应h1(n)');box on
subplot(2,2,2);y='y21(n)';tstem(y21n,y);
title('(e) h1(n)与R8(n)的卷积y21(n)');box on
subplot(2,2,3);y='h2(n)';tstem(h2n,y);    %调用函数tstem绘图
title('(f) 系统单位脉冲响应h2(n)');box on
subplot(2,2,4);y='y22(n)';tstem(y22n,y);
title('(g) h2(n)与R8(n)的卷积y22(n)');box on
%=========内容3:谐振器分析=============================
un=ones(1,256);    %产生信号u(n)
n=0:255;
xsin=sin(0.014*n)+sin(0.4*n); %产生正弦信号
A=[1,-1.8237,0.9801];B=[1/100.49,0,-1/100.49];  %系统差分方程系数向量B和A
y31n=filter(B,A,un);    %谐振器对u(n)的响应y31(n)
y32n=filter(B,A,xsin);    %谐振器对u(n)的响应y31(n)
figure(3)
subplot(2,1,1);y='y31(n)';tstem(y31n,y);
title('(h) 谐振器对u(n)的响应y31(n)');box on
subplot(2,1,2);y='y32(n)';tstem(y32n,y);
title('(i) 谐振器对正弦信号的响应y32(n)');box on

情况说明

1.部分没有自定义画图函数tstem的MATLAB,可能会仿真失败。
解决办法:自定义函数tstem
首先文件命名tstem(与函数名一致)
选择function
function代码块

function [ output_args ] = Untitled2( input_args )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here


end

Untitled2为函数名,output表示函数输出值,input表示函数输入参数;中间为函数实体功能语句。

tstem函数

function [  ] = tstem( xn,yn)
n=0:length(xn)-1;%表示n为0到xn-1
stem(n,xn,'.');%以n为X轴,xn为Y轴,画出stem图。上面的数据点处用实心点“.”表示
xlabel('n');ylabel('yn');%分别给x,y轴取注标
axis([0,n(end),min(xn),1.2*max(xn)]);%axis([xmin xmax ymin ymax]) 用来标注输出的图线的最大值最小值或者是取界限
end

2.可能会显示错误或者警告
在这里插入图片描述
意思输入参数不足,n的问题,不过可以忽略,不影响函数功能。

主要函数程序说明

title为画图,图像取主题。

subplot(m,n,p)或者subplot(m n p)。
subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表示2行图。p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。

函数 y=impz(p,d,N) 求系统的冲激响应, p 表示输入 x 的系数,d 表示差分方程输出 y 的系数, N 表示冲击响应输出的序列个数。

y=filter(p,d,x) 实现差分方程的仿真, d 表示差分方程输出 y 的系数, p 表示输入 x 的系数,而 x 表示输入序列。输出结果长度数等于 x 的长度。

figure 命令,能够创建一个用来显示图形输出的一个窗口对象。(figure,就是控制窗口数量的)

y=conv(x,h) 计算卷积

结果图在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

结束语

希望可以对各位有所帮助,如有错误,希望可以斧正。谢谢!

猜你喜欢

转载自blog.csdn.net/qq_44885018/article/details/90753100
今日推荐