Causal and non-causal systems in real world

Causal systems are defined as the systems whose :

1. Output depends on present as well as past inputs and the impulse response; and sometimes depends also on the past outputs (in case of recursive systems).

2. Impulse response $h(n)$ consists of only positive samples.

Also, I am trying to link this concept to real world scenario using FIR filter whose design equation is:$$y(n)=h(0)x(n)+h(1)x(n-1)+\ldots+h(M)x(n-M)$$

Based on all this theory, I have questions as given below :

• a. I wish to ask if it is possible for any system (non-causal/anti-causal real world system) to have negative samples?? Is it that be it causal or non-causal, all real world systems always have positive samples only? Negative samples are of consideration only in theory?

• b. We show past inputs using delay blocks $\left(z^{-1}\right)$. So, this means delayed signals give us past inputs in real world? I am confused. I thought the filter uses past inputs saved in its memory. How can we get past inputs by adding a delay?

• c. If I take any real world filter, and suppose I give an input sine wave of some frequency to it. Then, filter decides if this frequency should be allowed to pass or not depending on the past input samples of this sine wave which it had stored in its memory? So, this way the output depends on past inputs as well and so we say it is causal system?

In discrete-time systems, causality is a requirement only when processing (filtering) signals in real time; i.e. when the index $n$ corresponds to a physical time $n \times T_s$. In this case, a non-causal system is impossible to implement since calculating the current output would require inputs from a future time.

In practice, however, many systems are not real time.

Image processing, for example, has indexes for horizontal and vertical coordinates. So it's OK to apply a non causal filter to an image (usual examples being 0-centered FIR filters for blurring or sharpening, or IIR filters applied in both directions to obtain 0 phase distorsion).

In time sequences, many times the signal is stored and then processed in non real time, so you may apply non-causal filters there also.

Let me try to address your confusion with $z^{-1}$ using some graphics I have.

First $z^{-1}$ specifically is the z-transform of a delay of one sample. After going through a sample delay ($z^{-1}$) the sample will represent the data from 1 sample in the past. Consider the shift register example depicted below. At any given time (represented by "now") when we add a sample to the input of the register, shifting in all prior inputs, if we look into the register we will see data from the past. A filter requires data from the past (you can refer to this as the filter's "memory") in order to operate as a filter. It's current output will depend on the current input and all previous inputs to the depth of it's memory.  