a = [1 3 2]; %将y(t)各阶导数的系数放在向量a中
b = [2 6]; %将f(t)各阶导数的系数放在向量b中
sys = tf(b,a); %求系统模型sys
td = 0.01; %定义时间间隔
t = 0 : td : 10; %定义时间向量
f = ones(1,length(t)); %将f(t)表示出来
figure(1)
y = lsim(sys, f, t); %求系统的零状态响应
subplot(2,1,1);plot(t,y);title('零状态响应');
xlabel('t(sec)');
ylabel('yzs(t)');%绘出零状态响应的波形
grid on %在图上显示方格
subplot(2,1,2);
step(sys,t);title('阶跃响应'); %计算阶跃响应并绘制波形
xlabel('t'); %给出x坐标的标签
ylabel('g(t)'); %给出y坐标的标签
grid on %在图上显示方格
两个问题:
1:请问上面我写的输入信号-阶跃信号写错没有,有没有其他更好的写法?
2:请问下一问中matlab输入信号为冲激信号怎样表示,我查了一下大部分是用函数,但我想请问一下这里能不能像表示阶跃信号的形式来表示冲激信号;例如f(t)=exp(-t)还有就是我上面写的那个阶跃信号?
第一次学用matlab,多有不懂,请大家不吝赐教!
望采纳。
在你的代码中,输入信号f(t)是一个阶跃信号,所以写法没有问题。阶跃信号在 Matlab 中可以用一个全部元素都是1的向量来表示,如你写的 f = ones(1,length(t))。你也可以使用 f = step(t) 来表示阶跃信号。
冲激信号在 Matlab 中也可以用一个向量来表示,你可以使用 f = [1, zeros(1, length(t)-1)] 来表示一个单位冲激信号,即在 t=0 时,输入信号f(t)=1,其余时刻f(t)=0。你也可以使用函数来表示冲激信号,例如 f = exp(-t)。
注意,在使用 lsim 函数计算系统的零状态响应时,需要保证输入信号f(t)是时间连续的,否则可能会得到错误的结果。