matlab求系统的零输入响应代码
时间: 2023-08-22 22:09:30 浏览: 59
以下是 MATLAB 中求系统的零输入响应的代码:
```matlab
% 定义系统的传递函数
num = [1 2]; % 分子多项式系数
den = [1 3 2]; % 分母多项式系数
sys = tf(num, den); % 构造系统的传递函数
% 定义输入信号
t = 0:0.1:10; % 时间向量
u = sin(t); % 正弦输入
% 求系统的零输入响应
zi = initial(sys); % 求系统的零状态响应
zi = zi(:)'; % 将结果转换为行向量
zi = [zi zeros(1, length(t)-length(zi))]; % 补齐长度
% 绘制结果
plot(t, zi);
title('系统的零输入响应');
xlabel('时间');
ylabel('输出');
```
其中,`num` 和 `den` 分别表示系统的传递函数的分子多项式系数和分母多项式系数,`sys` 表示系统的传递函数。`t` 和 `u` 分别表示时间向量和输入信号。`zi` 表示系统的零输入响应。最后使用 `plot` 函数绘制结果。
相关问题
matlab求零输入响应
求零输入响应可以使用MATLAB中的`step`和`impulse`函数。
假设我们有一个系统的传递函数为H(s),用下面的代码求其零输入响应:
```matlab
% 定义传递函数
num = [1 2];
den = [1 5 6];
H = tf(num, den);
% 求零输入响应
t = 0:0.1:10;
u = zeros(size(t));
y = step(H, t, u) - impulse(H, t, u);
% 绘制响应曲线
plot(t, y);
xlabel('Time (sec)');
ylabel('Amplitude');
title('Zero Input Response');
```
在上面的代码中,我们首先定义了传递函数H(s),然后使用`step`函数求出了系统的单位阶跃响应,再使用`impulse`函数求出了系统的单位冲击响应。最后将两个响应相减得到了零输入响应,并绘制了响应曲线。
需要注意的是,在求零输入响应时输入信号要设置为零,否则求得的响应将包含零状态响应。
利用matlab求零输入响应
求解零输入响应需要先知道系统的传递函数或差分方程,然后可以利用MATLAB进行求解。以下是两种方法:
方法一:利用LTI对象进行求解
假设已知系统的传递函数为H(s),可以通过以下步骤求解零输入响应:
1. 创建LTI对象:`sys = tf(H)`
2. 计算零输入响应:`zi = initial(sys)`
3. 绘制零输入响应曲线:`plot(zi)`
方法二:利用差分方程进行求解
假设已知系统的差分方程为y(n) = a1*y(n-1) + a2*y(n-2) + ... + b0*x(n) + b1*x(n-1) + b2*x(n-2) + ...,可以通过以下步骤求解零输入响应:
1. 定义差分方程系数:`a = [a1, a2, ...]`,`b = [b0, b1, b2, ...]`
2. 计算系统的单位脉冲响应:`h = impz(b, a)`
3. 定义输入信号,可以是任意形式的信号,比如阶跃信号、正弦信号等。
4. 计算零输入响应:`zi = filter(h, 1, x)`
其中x为输入信号。最后绘制零输入响应曲线即可。
下面给出一个例子:
假设有一个二阶系统,其传递函数为:
H(s) = (s+2) / (s^2 + 3s + 2)
现在要求系统对于一个阶跃输入的零输入响应。
MATLAB代码如下:
```
% 定义系统的传递函数模型
num = [1 2];
den = [1 3 2];
sys = tf(num, den);
% 计算零输入响应
zi = initial(sys);
% 绘制零输入响应曲线
plot(zi);
xlabel('Time (s)');
ylabel('Zero Input Response');
```
运行上述代码,即可得到系统的零输入响应曲线。