in my notes for DSP they have the difference equation general form as:

y(k) + a1*y(k-1) + a2*y(k-2) + ... + an*y(k-N) = b0*x(k) + b1*x(k-1) + ... + bm*x(k-M)

with the claim that for the output to not depend on future values of the input then M<=N.

Why is this the case?

In fact, if I'm not missing something here I think I can provide a counterexample:

y(k) = x(k-1)

which has N = 0 and M = 1. But this is just a unit delay, the output is just the previous value of the input.

What's going on here?


You're right, it's simply not true that $M\le N$ is necessary for causality. The difference equation in your question can always be implemented by a causal system.

However, note that the difference equation is not uniquely related to a causal system. A simple example is


This can obviously be implemented by a causal system. But for $a\neq 0$ you can also rewrite (1) as


which suggests an anti-causal system, even though (1) and (2) are completely equivalent. This difference is reflected by the transfer functions ($\mathcal{Z}$-transforms) of the corresponding systems. For a causal system the region of convergence (ROC) is outside a circle enclosing all poles, whereas for an anti-causal system the ROC is inside a circle outside of which all poles are located.

  • $\begingroup$ So is the condition M<=N useful for anything at all? $\endgroup$ – user16250 Jun 15 '15 at 9:36
  • $\begingroup$ @user16250: Can't think of anything. $\endgroup$ – Matt L. Jun 15 '15 at 10:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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