A discrete-time signal is delayed by samples when we write , with . Choosing to be negative advances the signal along the integers. As opposed to analog delays, discrete-time delays can only be integer valued. In the frequency domain, delaying a signal corresponds to a linear phase shift of the signal's discrete-time Fourier transform: .
Linear discrete-time systems have the superposition property.
We want to concentrate on systems that are both linear and shift-invariant. It will be these that allow us the full power of frequency-domain analysis and implementations. Because we have no physical constraints in "constructing" such systems, we need only a mathematical specification. In analog systems, the differential equation specifies the input-output relationship in the time-domain. The corresponding discrete-time specification is the difference equation.
As opposed to differential equations, which only provide an implicit description of a system (we must somehow solve the differential equation), difference equations provide an explicit way of computing the output for any input. We simply express the difference equation by a program that calculates each output from the previous output values, and the current and previous inputs.
Difference equations are usually expressed in software with
for loops. A MATLAB program that would
compute the first 1000 values of the output has the form
for n=1:1000
y(n) = sum(a.*y(n-1:-1:n-p)) + sum(b.*x(n:-1:n-q));
end
An important detail emerges when we consider making this program
work; in fact, as written it has (at least) two bugs. What input
and output values enter into the computation of
? We need values for
,
, ..., values we have not yet computed. To compute
them, we would need more previous values of the output, which we
have not yet computed. To compute these values, we would need
even earlier values, ad infinitum. The way out of this
predicament is to specify the system's initial
conditions: we must provide the
output values that
occurred before the input started. These values can be
arbitrary, but the choice does impact how the system responds to
a given input. One choice gives rise to a
linear system: Make the initial conditions zero. The reason
lies in the definition of a linear system: The only
way that the output to a sum of signals can be the sum of the
individual outputs occurs when the initial conditions in each
case are zero.
The initial condition issue resolves making sense of the difference equation for inputs that start at some index. However, the program will not work because of a programming, not conceptual, error. What is it? How can it be "fixed?"
The indices can be negative, and this condition is not allowed in MATLAB. To fix it, we must start the signals later in the array.
Let's consider the simple system having and .
To compute the output at some index, this difference equation says we need to know what the previous output and what the input signal is at that moment of time. In more detail, let's compute this system's output to a unit-sample input: . Because the input is zero for negative indices, we start by trying to compute the output at .
: | : | |
Coefficient values determine how the output behaves. The parameter can be any value, and serves as a gain. The effect of the parameter is more complicated ([link]). If it equals zero, the output simply equals the input times the gain . For all non-zero values of , the output lasts forever; such systems are said to be IIR (Infinite Impulse Response). The reason for this terminology is that the unit sample also known as the impulse (especially in analog situations), and the system's response to the "impulse" lasts forever. If is positive and less than one, the output is a decaying exponential. When , the output is a unit step. If is negative and greater than , the output oscillates while decaying exponentially. When , the output changes sign forever, alternating between and . More dramatic effects when ; whether positive or negative, the output signal becomes larger and larger, growing exponentially.
Positive values of are used in population models to describe how population size increases over time. Here, might correspond to generation. The difference equation says that the number in the next generation is some multiple of the previous one. If this multiple is less than one, the population becomes extinct; if greater than one, the population flourishes. The same difference equation also describes the effect of compound interest on deposits. Here, indexes the times at which compounding occurs (daily, monthly, etc.), equals the compound interest rate plus one, and (the bank provides no gain). In signal processing applications, we typically require that the output remain bounded for any input. For our example, that means that we restrict and choose values for it and the gain according to the application.
Note that the difference equation, does not involve terms like or on the equation's right side. Can such terms also be included? Why or why not?
Such terms would require the system to know what future input or output values would be before the current value was computed. Thus, such terms can cause difficulties.
A somewhat different system has no "" coefficients. Consider the difference equation