利用matlab的impluse函数和step函数分别求解连续函数的冲激响应和阶跃响应,绘图并与理论值比较
时间: 2024-03-10 16:50:13 浏览: 258
好的,我可以回答你的问题。以下是利用matlab的impulse函数和step函数求解连续函数的冲激响应和阶跃响应的步骤:
1. 定义系统的传递函数H(s)。
2. 利用H(s)求出系统的单位冲激响应h(t)和单位阶跃响应g(t)。
3. 利用matlab的impulse函数和step函数分别求出系统的冲激响应和阶跃响应。
4. 绘制系统的理论值和matlab求解值的图像,并进行比较。
以下是一个例子:
假设系统的传递函数为H(s) = (s+1)/(s^2 + s + 1),则系统的单位冲激响应h(t)和单位阶跃响应g(t)为:
h(t) = (1/2)*e^(-t/2)*sin((sqrt(3)/2)*t)
g(t) = 1 - (1/2)*e^(-t/2)*(cos((sqrt(3)/2)*t) + (1/sqrt(3))*sin((sqrt(3)/2)*t))
利用matlab的impulse函数和step函数求出系统的冲激响应和阶跃响应的代码如下:
```matlab
%定义系统的传递函数H(s)
num = [1 1];
den = [1 1 1];
H = tf(num,den);
%利用H(s)求出系统的单位冲激响应h(t)和单位阶跃响应g(t)
syms t;
h_t = ilaplace((s+1)/(s^2 + s + 1));
g_t = ilaplace(1/s * (s+1)/(s^2 + s + 1));
%利用matlab的impulse函数和step函数分别求出系统的冲激响应和阶跃响应
[t,h] = impulse(H);
[t,g] = step(H);
%绘制系统的理论值和matlab求解值的图像,并进行比较
subplot(2,1,1);
plot(t,h,'r',t,double(subs(h_t,t)),'b');
title('冲激响应');
legend('matlab求解值','理论值');
subplot(2,1,2);
plot(t,g,'r',t,double(subs(g_t,t)),'b');
title('阶跃响应');
legend('matlab求解值','理论值');
```
运行以上代码,可以得到系统的冲激响应和阶跃响应的图像,并进行比较。
阅读全文