# Is there a way to obtain the impulse response of a discrete system by just knowing it's response to the discrete unit step function?

In continuous time it was possible;

$$u(t){\longrightarrow} \boxed{\quad\textrm{system}\quad} {\longrightarrow} y(t)\implies \delta(t)=\frac{du(t)}{dt}{\longrightarrow}\boxed{\quad\textrm{system}\quad}{\longrightarrow} \frac{dy(t)}{dt}=h(t)$$

Does the same apply for discrete time system i.e.
$$\delta[t]=\frac{du[t]}{dt} \quad\textrm{where:}\begin{cases} \delta[t] &\textrm{is the discrete time delta}\\ u[t] & \textrm{is the discrete time unit step function}\end{cases}$$

Is there a way to obtain the impulse response of a discrete system by just knowing the response of the discrete unit step?

• Awesome question! Welcome to DSP.SE. Stick around and contribute! – Phonon Nov 4 '13 at 0:46

A simpler version of Phonon's answer is as follows.

Suppose that $y$ denotes the response of the system to the unit step function. Then, as discussed in this answer, in general, $y$ is the sum of scaled and time-delayed copies of the impulse response, and in this particular case, no scaling is required; only time delays. Thus, \begin{align} y[0] &= h[0]\\ y[1] &= h[1] + h[0]\\ y[2] &= h[2] + h[1] + h[0]\\ y[3] &= h[3] + h[2] + h[1] + h[0]\\ \vdots~ &= ~\vdots \end{align} where each column on the right is a (unscaled and) time-delayed impulse response. Thus, we easily get that \begin{align} h[0] &= y[0]\\ h[1] &= y[1]-y[0]\\ h[2] &= y[2]-y[1]\\ \vdots~ &= ~\vdots\\ h[n] &~= y[n] - y[n-1]\\ \vdots~ &= ~\vdots \end{align} with nary a mention of filters, inverses, convolutions, integration, operators and the like, just simple consequences of the definition of linear time-invariant system.

• You have clearly done this for longer than I have = ) – Phonon Nov 4 '13 at 2:56

Yes, this is equally true in the discrete systems case. The differentiation operation in this case is replaced to by first order difference. It don't think it has a universal symbol, but let's call it $D(\cdot)$. This operation is equivalent to filtering your signal with $y[n] = x[n] - x[n-1]$. Let's call this filter $d[n]$. I'm going to denote convolution that the $*$ symbol.

Let's now apply what we know about convolution to this operator. We know that we obtain $u[n]$ with a running sum (discrete integrator) on $\delta[n]$. In fact, the system represented by $u[n]$ itself turns out to be this discrete integrator. Also note that these two operators are inverses of each other, and that specifically $u[n] * d[n] = \delta[n]$.

Now, we know that convolution is commutative, that is $$a[n]*b[n] = b[n]*a[n]$$

and associative, that is $$\left(a[n] * b[n]\right) * c[n] = a[n] * \left(b[n] * c[n]\right)$$

So, $$x[n] = \delta[n] * x[n] = u[n] * d[n] * x[n] = d[n] * u[n] * x[n] = d[n] * \left(u[n] * x[n]\right)$$

So, you can see that you can recover $x[n]$ from $\left(u[n] * x[n]\right)$ by applying the first order difference, just like in the continuous case.

Assumptions:

• Continuous time domain: Let $h(t)$ - impulse response, and $s(t)$ - step response
• Discrete time domain: Let $h[n]$ - unit impulse response, and $s[n]$ - unit step response

Intuitively speaking, integration in continuous time domain is equivalent to summation in discrete time domain. Similarly, derivative in continuous time domain is equivalent to finite difference in discrete domain.

With this intuitive understanding, consider the relation between $u$ and $\delta$ (left side of the second equation in your post):

• Continuous time domain: $u(t) = \int \delta(t)$
• Discrete time domain: $u[n] = \sum_{k=0}^{\infty} \delta[n-k]$

Similarly, consider the relation between $s$ and $h$ (right side of the second equation in your post):

• Continuous time domain: $s(t) = \int h(t)$
• Discrete time domain: $s[n] = \sum_{k=0}^{\infty} h[n-k]$

Now, if you carefully look at last equation:

$$s[n] = \sum_{k=0}^{\infty}h[n-k]$$

Now $h[n]$ can be found from this equation using finite difference of $s[n]$ with a delayed version of itself, i.e. with $s[n-1]$:

$$h[n] = s[n] - s[n-1]$$