num = [1,2,3,4] den = [1,.1,.2,.3] [A,B,C,D] = tf2ss(num,den) N = 20; % number of time samples for tests u = [1,zeros(1,N-1)]; % impulse order = length(den) - 1; x = zeros(order,1); for n=1:N y(n) = C*x + D*u(n); x = A*x + B*u(n); end ytf = filter(num,den,u); disp(sprintf(... ['Relative difference between state-space and difference-equation\n',... '\timplementations of this digital filter is %f%%'],... 100*norm(y-ytf)/norm(ytf)));