27 lines
901 B
Matlab
27 lines
901 B
Matlab
function y=lsim(G,u,t)
|
|
% lsim - simulation of an FOTFS object driven by given inputs
|
|
%
|
|
% lsim(G,u,t)
|
|
%
|
|
% G - an FOTF object
|
|
% u, t- input samples and time vector
|
|
|
|
% Copyright (c) Dingyu Xue, Northeastern University, China
|
|
% Last modified 28 March, 2017
|
|
% Last modified 18 May, 2022
|
|
[n,m]=size(G); t0=t(1); t1=t(end); [nu,mu]=size(u);
|
|
if nu==m && mu==length(t), u=u.'; end
|
|
if nargout==0, lsim(tf(zeros(n,m)),'w',zeros(size(u)),t); end
|
|
for i=1:n, y1=0;
|
|
for j=1:m, g=G(i,j); uu=u(:,j);
|
|
y2=fode_sol9(g.den.a,g.den.na,g.num.a,g.num.na,uu,t,3);
|
|
ii=find(t>=g.ioDelay); lz=zeros(1,ii(1)-1);
|
|
y2=[lz, y2(1:end-length(lz))]; y(:,i)=y1+y2;
|
|
end, end
|
|
if nargout==0, khold=ishold; hold on
|
|
h=get(gcf,'child'); h0=h(end:-1:2);
|
|
for i=1:n, axes(h0(i));
|
|
plot(t,y(:,i),t,u,'--'), xlim([t0,t1])
|
|
end, if khold==0, hold off, end, end
|
|
end
|