# What is the difference between a causal system and a system with memory?

As far as I know, memoryless systems are causal systems. But why aren't systems with memory necessarily causal?

Since the system with memory is affected by past input and current input, I think that this property is the same as causality.

• Please be more careful when choosing tags. This has nothing to do with the FFT. Oct 5, 2021 at 9:30
• I have never seen "memoryful system", but "memory" or "non-memoryless". Do you have a reference? Oct 5, 2021 at 11:16
• Its true :) Yet.. Modifying a question with a grammatical form that some of us (please, colleagues, tell me if I am wrong) have never seen in legit DSP book (and that I could not find over the Internet so far) seems extreme to me, and not useful to the community. Do not hesitate to invest in terminology groups, and please tell us when you unstandardize "transfer function" or "block convolution" Oct 5, 2021 at 13:44
• "System with memory" is grammatically correct, and flows nicely. Yes, "memoryless system" and "system with memory" may not be perfectly grammatically symmetrical -- but they still work, and should avoid arguments with pedants. Oct 5, 2021 at 16:57
• "Memoryless system" or "instantaneous system" vs. "system with memory" or "dynamic system". Enough accepted and grammatically as well as technically correct terms, so no need to invent new ones. Oct 13, 2021 at 9:17

A system is memoryless if its output at a given time is dependent only on the input at that same time (and potentially the time itself). The converse is called a system with memory ("memory system" or "non-memoryless"): it can use past or future information. A causal system only on past inputs and outputs.

Nota: the notion of "future" here is relative to the system. To me, it amount to getting/buffering future samples prior to computing something on the present sample. One example is the decoding on images in video. The compression principle being based on predicting motions from one frame to the others, standards use intra pictures (coded independently), and others in a "GoP" (group of picture) can be coded using past or past and future images, resulting in a non causal transmissions, but with memory.

There other pointers:

A system with memory might depend its output at older input.

It doesn't say it can't also depend on future input.

So, "having memory" and "being causal" are simply two different things.

• I'm trying to decide if one would want to characterize a non-causal system as "remembering" stuff that happened in the future ("premembering"?), or if just leaving it as "depending on future inputs" would avoid time spent making sense out of nonsensical things. Oct 5, 2021 at 17:00
• yeah, nothing's harder than unambigously naming things :) That's why I settled on "If someone tells you a system has memory, simply make no assumptions but that it has memory". I'd personally go with your idea – and consider "memory" as "has state that spans more than a single point in time", but, it's not really there in the word... Oct 5, 2021 at 17:59

Having memory and being causal are two different things. However, there is some correlation between the two, because a memoryless (also called instantaneous) system must be causal because it only depends on the current input, not on any past or future inputs.

A system with memory (also called dynamic) can be either causal or non-causal. This is simply the case because any system that is not instantaneous must be dynamic, i.e., have memory, which, by definition, must include causal and non-causal systems.

E.g., the system with input-output relation

$$y(t)=\int_{t-T}^{t+T}x(\tau)d\tau\tag{1}$$

is certainly not memoryless, hence it is dynamic. It depends on past inputs as well as on future inputs, making it a non-causal system.