My efforts of solving this question are below.


I came to a conclusion that this system is causal, since:

$$ \begin{cases} w[k]+5w[k-1]+6w[k-2]=x[k] \\ y[k]=w[k]+2w[k-1]+3w[k-2]+4w[k-3] \end{cases} $$

Where $w[n]$ is the output of the leftmost summation. After conducting Z transforms:

$$ \begin{cases} \frac{W(z)}{X(z)} = \frac{1}{1+5z^{-1}+6z^{-2}} \\ \frac{Y(z)}{W(z)} = 1+2z^{-1}+3z^{-2}+4z^{-3} \end{cases} $$

$$\Rightarrow H(z) = \frac{Y(z)}{X(z)} = \frac{Y(z)}{W(z)} \frac{W(z)}{X(z)} = \frac{1+2z^{-1}+3z^{-2}+4z^{-3}}{1+5z^{-1}+6z^{-2}} = \frac{z^{3}+2z^{2}+3z+4}{z^{3}+5z^{2}+6z} = \frac{(z+1.651)(z+(0.175-j1.547))(z+(0.175+j1.547))}{z(z+2)(z+3)} $$

According to that, I had concluded that this system has 3 zeroes and 3 poles, therefore the number of zeroes is less than or equal to the number of poles, and therefore the system is causal.

However, the answer key states the following:

enter image description here

Where have I made a mistake? Please, correct me if I'm wrong.

  • $\begingroup$ From which text is that exercise and its "solution"? Because the latter is complete nonsense. $\endgroup$
    – Matt L.
    Feb 8, 2021 at 17:08
  • $\begingroup$ This question is taken from a past final exam in a course I'm taking, "Intro to DSP". I was quite sure of my answer, then looked at the answer key and was dumbfounded. Sadly, many solutions to past exams in all courses I take are often riddled with mistakes. $\endgroup$
    – uriyabsc
    Feb 8, 2021 at 17:12
  • 3
    $\begingroup$ That's a real pity. I hope that at least your correct solutions won't be counted as wrong ... $\endgroup$
    – Matt L.
    Feb 8, 2021 at 17:17
  • $\begingroup$ Thank you! We'll see after my final exam in 2 days :) $\endgroup$
    – uriyabsc
    Feb 8, 2021 at 17:18
  • 2
    $\begingroup$ We'll give you ammunition to talk your prof into the right answer if necessary! $\endgroup$
    – TimWescott
    Feb 8, 2021 at 22:17

3 Answers 3


Note that in this case you can see that the system is causal only from the given implementation. It's important to understand that you can't see it from the difference equation (if no initial conditions are given), and in general you can't see it from the transfer function either (if no region of convergence is given). The only case for which the expression of the transfer function is sufficient to conclude that the corresponding system is non-causal is if the transfer function is not proper, i.e., if the degree of the numerator (as a function of $z$, not $z^{-1}$!) is greater than the degree of the denominator. Also take a look at this related answer.

Let's look at an example:


Does $(1)$ describe a causal system? Well, it can describe a causal system, but it can also be read as

$$y[n-1]=\frac{1}{a}\big(y[n]-bx[n]\big),\qquad a\neq 0\tag{2}$$

which can clearly describe a non-causal system if interpreted as "at time instant $n-1$, compute $y[n-1]$ from $y[n]$ and $x[n]$ according to the equation".

The corresponding transfer function


just conveys the same information as the difference equation $(1)$. Consequently, the expression $(3)$ doesn't reveal the system's causality either. Only if we know the region of convergence (ROC) of $(3)$ can we judge whether the system is causal or not. If the ROC is $|z|>a$, the corresponding system is causal, and and if the ROC is $|z|<a$, the system is non-causal.

  • $\begingroup$ How is (2) 'clearly' not a causal system? It's essentially the same equation as 1. Also, why is the H(z) you've written is causal if the ROC is $|z| > a$, and non - causal otherwise? $\endgroup$
    – uriyabsc
    Feb 8, 2021 at 19:06
  • 1
    $\begingroup$ @uriyaba: I've slightly edited my formulation to make clear what I meant by that statement. Concerning the ROCs, it's about convergence of the sum defining the Z-transform. $\endgroup$
    – Matt L.
    Feb 8, 2021 at 20:04
  • $\begingroup$ @uriyaba: You have to realize that due to the ambiguity discussed in my answer, writing down a difference equation from a given implementation actually takes away information, namely the information about causality: do I use the equation to compute $y[n]$ from past and current values only, or do I compute it from future (and past) values? $\endgroup$
    – Matt L.
    Feb 8, 2021 at 20:44
  • $\begingroup$ I think I understood the part about the difference equations, however, I still struggle to understand how to deduct the ROCs for which a system is causal or not. Would you kindly go into a little bit more detail on how to do that? $\endgroup$
    – uriyabsc
    Feb 9, 2021 at 7:53
  • $\begingroup$ @uriyaba: You should probably review some Z-transform theory, but just to make it intuitively clear: the Z-transform of a right-sided impulse response has the form $\sum_{k=M}^{\infty}h[n]z^{-n}$, which - if it converges at all - must converge in a region $|z|>c$ for some positive contant $c$, simply because of the negative sign of the exponent of $z$ in the definition of the Z-transform. For a left-sided impulse response, the opposite must be true. $\endgroup$
    – Matt L.
    Feb 9, 2021 at 8:51

Purely by inspection of the block diagram the system is causal, because the output is the sum of the current input sample and stuff that's delayed -- there's no $z$ blocks in there to predict the future, just $z^{-1}$ block to react to the past.

Also by your method of finding the transfer function, the system is causal -- with a $3^{rd}$ order numerator and a $3^{rd}$ order denominator, it does have an immediate response, but it's not "reacting" to future events.

I believe that whoever made the exam key erred by calculating polynomials in $z^{-1}$, in which case the denominator order is, indeed, smaller than the numerator order, but then applying a rule that's only valid if the polynomials are in $z$.

(Note: some authors may want to define a strictly causal system as one whose output only depends on past values of the input -- that doesn't appear to be the case here; your exam key seems to be going by the correct rule, just misusing it).


The system is causal, provided that the recursion is forward; i.e., it's recursed for increasing $k$.

Seeing that you are confused about causality tests, let me elaborate on it.

Let's put the definition of causality from Oppenheim's Signals & Systems book :

A system is causal if the output at any time depends only on values of the input at the present time or past

Let's also put the definition of causality from Oppenheim's Discrete-Time Signal Processing book :

A system is causal if, for every choice of $n_0$, the output sequence value at the index $n=n_0$ depends only on the input sequence values for $n \leq n_0$.

Focusing on discrete-time systems, then we shall consider linear, nonlinear, time-varying, time-invariant, recursive, non-recursive systems while testing for causailty.

In general if nothing about the system is specified but just a formula for input-output computation (I/O relation) is given, then you can use the above definitions to test whether the system is causal or not.

For example the system : $$ y[n] = T\{x[n]\} = \sum_{k=n-d}^{n+d} c[k]~x[k] $$ is a non-recursive, linear, and non-causal (and stable) system with memory, as the summation requires future values of input.

For example the system : $$ y[n] = T\{x[n]\} = \sum_{k=-d}^{d} x[n+k]x[n-k] $$ is a non-recursive, non-linear, and non-causal (and stable) system with memory, as the summation requires future values of input.

Note that for a non-recursive system, the output $y[n]$ only depends on the values of input $x[n]$, and not on itself: Such systems do not require an initial condition (of $y[n]$) to be specified for computation of the output. However, for recursive systems you also need to specify initial conditions of $y[n]$, for computing the output via a recursion.

In particular if a system is LTI (Linear Time-Invariant) you can use it's impulse response $h[n]$ to test whether it's causal or not; specifically:

An LTI system is causal iff $h[n]=0$ for all $n<0$

Furthermore, for LTI systems, you can compute their system function $H(z)$, (Z-transform of impulse response) and test for causality as:

An LTI system with rational transfer function is causal if the ROC (region of convergence) of its system function H(z) extends outward from the largest pole, or is the entire Z-plane except possibly $z=0$.

Note that $H(z)$ alone is not sufficient to determine causality; because it's not already sufficient to find the impulse response $h[n]$. Different impulse responses correspond to the same $H(z)$, for different ROCs.

Furthermore, since $H(z)$ of an LTI system uniquely specifies the corresponding LCCDE of the same system, therefore, in general for recursive systems, LCCDE alone is not sufficient to conclude for the causality of the corresponding system. You need additional information stated explicitly.

For example the LCCDE : $$ y[n] = 0.5 y[n-1] + x[n]$$

has two possible solutions for $n>0$ and for $n<0$ with proper initial conditions in both cases. Note that the former solution will be causal whereas the latter solution will be non-causal.

Finally, a block diagram can provide a pictorial definition for an LCCDE, and from a block diagram alone, for recursive systems, it's not possible to determine if it corresponds to a causal system or not, unless additional information is specified.

Note that if the system is non-recursive, (such as an FIR LTI) then you can directly determine causality based on the I/O relation, or $h[n]$, or $H(z)$, or the block diagram alone. For such non-recursive systems, you do not need additional information required for recursive systems.

Finally in your example, you are given a Direct-Form-II implementation of an LCDDE, and the additional information should be in the form of $n>0$ or $n<0$ to determine the causality fo the system that it corresponds to, however if it's not specified, then assuming $n>0$ is the more natural choice and your system will become causal then.

  • $\begingroup$ At which stage of my solution is it possible to see that? For me, I guess it'd be somewhat apparent when the transfer function is written, but is it possible to know that beforehand? Also, are the conclusions that I had made during my solution true? $\endgroup$
    – uriyabsc
    Feb 8, 2021 at 17:10
  • $\begingroup$ I'm confused - Matt said, that we can't know for sure if the system is causal or not just by looking at the difference equation. Is the fact that there's no feedback of output in this implementation, together with the difference equation, enough to say that the system is causal? $\endgroup$
    – uriyabsc
    Feb 8, 2021 at 19:34
  • $\begingroup$ Edited my answer for your confusion. $\endgroup$
    – Fat32
    Feb 9, 2021 at 13:46
  • $\begingroup$ Thanks for editing your answer! I'm going to re-read it a few times, since as of now, it seems like a huge amount of info which confuses me even more. I still appreciate it though! $\endgroup$
    – uriyabsc
    Feb 10, 2021 at 18:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.