# Differences between matlab's 'impulse' and 'lsim' command; create impulse response

I've got following problem:

assume you've this continous system 1st order:

$$H(s) = \frac{1}{1+s}$$

s = tf('s');
sys = 1/(1+s);

I'm going to discretize this system via impulse invariant transformation and plot the results.

sysD = c2d(sys,1e-3,'impulse');
impulse(sys);
hold all;
impulse(sysD);

So this seems to work.

If I try to create the impulse response for 7 seconds manually I use:

imp = zeros(1,7*1e3);
imp(1) = 1;
t = 0:1e-3:7-1e-3;
y = lsim(sys,imp,t);
plot(t,y)

Unfortunately this is not the response I expected. The gain seems to be scaled by the samplerate 1e3.

So the question is: What does impulse do since this response should be correct. lsim uses the filter command and simply passes the nominator and denominator to filter I think. Is the dirac impulse (or kronecker delta) wrong? Must it be scaled by the samplerate?

I discovered the whole thing, because I wanted to design a very simple digital filter. I knew the responses of time continuous systems, so I thought it would be easy to discretize the transfer function and use the coefficients of the digital transfer function that can be used by filter or in a dsp application.

What is wrong?

Thank you very much!

Indeed the lsim function is returning scaled values. You might also notice that it is connected to the gain $k$ of your filter: