matlab求零输入响应
时间: 2023-07-13 19:22:11 浏览: 79
对于线性时不变系统,其零输入响应可以通过求解系统的冲激响应来得到。具体而言,假设系统的单位冲激响应为h(t),输入信号为x(t),则系统的零输入响应y(t)可以表示为:
y(t) = h(t) * x(t)
其中“*”表示卷积运算。因此,要求系统的零输入响应,需要先得到其冲激响应h(t),然后再将其与输入信号进行卷积运算。
在MATLAB中,可以使用函数impulse来求解系统的单位冲激响应。假设系统的传递函数为H(s),则可以按照以下步骤求解:
1. 将传递函数H(s)转换为z域的系统函数H(z),使用函数c2d实现。
2. 使用函数impulse求解离散时间下的单位冲激响应h(n)。
3. 对h(n)进行反变换,得到连续时间下的单位冲激响应h(t)。
4. 将h(t)与输入信号进行卷积运算,得到系统的零输入响应y(t)。
下面是一段MATLAB代码示例,可以实现上述过程:
```matlab
% 定义系统传递函数
s = tf('s');
H = 1 / (s + 1);
% 将传递函数转换为z域系统函数
Ts = 0.1; % 采样时间
Hd = c2d(H, Ts, 'zoh');
% 求解离散时间下的单位冲激响应
[n, h] = impulse(Hd);
% 反变换得到连续时间下的单位冲激响应
t = 0:Ts:(length(h)-1)*Ts;
ht = d2c(t, h, 'zoh');
% 定义输入信号
t = 0:Ts:10;
x = sin(t);
% 计算系统的零输入响应
y = conv(ht, x, 'same');
% 绘制结果
subplot(2,1,1);
plot(t, x);
title('输入信号');
subplot(2,1,2);
plot(t, y);
title('零输入响应');
```
注意,在上述代码中,我们使用了函数d2c将离散时间下的单位冲激响应ht转换为连续时间下的单位冲激响应。这是因为MATLAB中的卷积函数只支持连续时间下的卷积运算,因此需要将离散时间下的结果转换为连续时间下的形式。