How can you approximate a Finite Impulse Discrete filter (FIR) using a continuous time linear dynamical system?
I am seeing this problem using Matlab, where the resulting continuous system (obtained using the
d2c Matlab function) is almost unstable and provides a step response that is totally different than the one expected when simulated using Simulink.
As an example, try to obtain a continuous time dynamical system whose response is similar to a moving average of the last 25 samples (sampled at 100 Hz).
This is the Matlab Code I am using
n = 25; k = 1/n*ones(1,n); n = length(k); A = diag(ones(1,n-1),1); B = [zeros(1,n-1) 1]' C = k; D = 0 sys = ss(A,B,C,D,0.01) sysc = d2c(sys,'tustin')
But, what happens is that you then simulate
sys using the Simulink continuous and discrete linear systems blocks and the output of
sysc goes unstable.
Is there a fundamental complexity/impossibility of doing this conversion? How can it be overcame?