In the digital domain, "Poles" come from the Z-transform of the impulse response of a filter, known as the transfer function.
The impulse response of a filter is the output when you feed it an impulse. An impulse is signal that looks like this: [1 0 0 0 0 ...] – a pure digital click. The impulse response is important because it turns out that it is sufficient to characterize any linear, time-invarient (LTI) filter completely. You can convolve a signal by the impulse response of a filter to 'apply' that filter to the signal. This is how convolution reverb works, for instance: an impulse response of a room (conceived as a filter) is recorded and your signal is convolved with that impulse response in realtime by the reverb plugin.
Discrete convolution is a mathematical operation that takes two discrete functions and generates a new function that multiplies every output of one function with every output of the other and sums them all. Convolution is expressed abstractly as:
So, the function (f∗g)[n] ("f convolved with g of n") gives you a sum that represents multiplying every output of the function f[n] with the corresponding output of the function g[n] and combining them all. The dependent variable 'n' determines how the outputs of the two functions are lined up, or which outputs of g[n] are multiplied with which 'corresponding' outputs of f[n]. Typically we take f[n] to be x[n], the input to the system and g[n] to be h[n], the impulse response of a filter, so:
y[n]=SUM(x[m]-h[n-m]) – (convolution of input x[n] with filter h[n])
A way to think about convolution is that you are generating a function that slides the output of two functions past each other, multiplying each element by each corresponding element and summing as you go along. The wikipedia entry has a good animated diagram for this.
"Poles" (and "zeros) come from what's known as the transfer function: H(z) = Y(z)/X(z), which comes from the z-transform of the impulse response of the filter: h[n]. The transfer function expresses that the z-transform of the impulse response is equal to the z transform of the output (y[n]) of the system x[n] -> [Filter] -> y[n] (the input convolved with the impulse response of the filter) divided by the z transform of the input (x[n]). This follows from the fact that multiplication in the "z-domain" is equivalent to convolution in the time domain. Just as the output of the system, y[n] is equal to
∗ denotes convolution, not multiplication), in the z domain, the output of the system, Y(z) is equal to H(z)X(z) (the z-transform of the impulse response multiplied by the z-transform of the input).
The z-transform is one of many different 'transforms' such as the famous Fourier transform and the Laplace transform. The essence of a transform is that you are multiplying each output of a function onto a new "basis". The canonical example of a basis is the axes of a 3-dimensional plot: [x,y,z]. What's essential about a basis is that if we treat the axes x, y, and z as vectors (lines), you cannot 'get' one of the axes by adding one of the other axes with anything at all (a number or another line [vector] in the space). A basis is precisely a vector (line) that cannot be created by linear combination of other vectors. So, a shape in 3D space can be expressed by considering its position relation to the axes [x,y,z]. Likewise, a signal can be characterized by considering its value at a give time-step n. Just as [x,y,z] is a basis onto which we can "project" 3D shapes, the set of discrete time steps n from -inf to +inf is a basis onto which we can project a function.
What 'transforms' do is they take a function and project it onto a new basis. Typically functions are projected onto "time" (n in discrete systems, t in continuous systems). The Fourier transform, on the other hand, projects a function onto an infinite array of sine waves of ever increasing frequency. This is accomplished simply by multiplication. If we want to project the function f[n] into "Fourier space", we just do SUM(f[n]*sin[n]). (However, please note that this is a naive explanation. The Fourier transform is actually a projection onto complex functions of the form e^i*n. e^i*n is equivalent to cos[n]+i*sin[n]. '*' denotes multiplication here.)
The z-transform projects a function onto a gigantic polynomial. Remember, a polynomial is a function that looks like this:
Remember solving equations like this?
Just as in the Fourier transform we project f[n] onto an array of sine waves of ever increasing frequency, in the z-transform we project f[n] onto an array of polynomial terms of ever increasing "degree". It looks like this: SUM(f[n]*z^-n) or:
z^-n is a complex number z = (y,x) raised to the negative nth power. The effective doing the z-transform on a function is that you are projecting the output into the 2-dimensional "z-plane". By analyzing the response of the z-transform of the frequency response of a filter in the z-plane, we can learn about it.
Poles and Zeros
Poles and zeros come into the picture when we take a look at what the transfer function actually looks like in practice. From wikipedia, we learn that the transfer function can be massaged into a factored form where H(z) = [factored-polynomial-1]/[factored-polynomial-2] like so:
With the z-transform of the impulse response of the filter in question so represented, we can start to analyze the properties of the filter. Indeed, the reason that one uses the z-transform in the first place is that it is a particularly good representation for analyzing the properties of filters. One of the things that the transfer function shows, once it is in factored form, is when the equation will go to infinity and when it will go to zero. A point, or a value of z for which the equation is equal to infinity is called a pole. A point, or a value z for which the equation is equal to zero is called a zero. The location of poles and zeros can tell you a lot about the frequency response of a filter.
The Fourier Transform is a Subset of the Z-Transform
Before we can understand why, we must first note that the z-transform contains the Fourier transform. In fact, the Fourier transform is just the Z-transform evaluated on the unit circle. The unit circle is a circle in the 2D complex number space that is centered around the origin, z = (0,0) and has a radius of 1. Yes, this is the same unit circle from trigonometry. Position on the unit circle corresponds to the frequency response of the filter at that frequency. Frequency here is express in radians. So, if we evaluate H(z) at z = pi/2 = 90 degrees, we get an idea of what the filter is going to do to signals at that frequency. Frequency here is "normalized". 0 is the lowest frequency, pi is the highest frequency, but pi is not necessarily 20khz. -pi corresponds to a negative frequency. In practice, negative frequencies are not reproduced by your speakers and are ignored except for in the math. Let's, however, assume that pi = 20khz. If that's the case, then the response at pi/2 corresponds to the response at 10khz.
Pole Zero Analysis
The reason that pole zero analysis is useful is that it lets us see the contours of the frequency response on the z-plane around the unit circle. A pole creates a peak that will amplify certain frequencies and a zero creates a valley that will attenuate certain frequencies. The z-transform is more useful than the Fourier transform for this kind of analysis because sometimes the poles and zeros are outside of the unit circle, in which case their effect on the frequency response is indirect. The best way to understand this is through a diagram:
And more conventionally we see 2D pole-zero plots like this where x's are poles and o's are zeros.
Again, tracing the unit circle lets you see the response at different frequencies and the z-transform lets you see the mathematical properties of the function that influence the frequency response. Tracing the unit circle and projecting it into 2D Euclidian space gives you the familiar frequency response diagram:
Please correct me if I made any mistakes in my explanation. I'm not a signal processing student/professional – I've just taken one course in DSP.