Normalized frequency (digital signal processing)

In digital signal processing (DSP), the continuous time variable, t, with units of seconds, is replaced by the discrete integer variable, n, with units of samples. More precisely, the time variable, in seconds, has been normalized (divided) by the sampling interval, T (seconds/sample), which causes time to have convenient integer values at the moments of sampling. This practice is analogous to the concept of Natural units, meaning that the natural unit of time in a DSP system is samples. Accordingly, the natural unit of frequency is cycles/sample, known as normalized frequency.

The normalized value of a frequency variable, \scriptstyle f (cycles/sec), is \scriptstyle f/f_s,  where \scriptstyle f_s = 1/T  is the sampling rate in samples/sec.  The maximum frequency that can be unambiguously represented by digital data is \scriptstyle f_s/2  (known as Nyquist frequency) when the samples are real numbers, and \scriptstyle f_s  when the samples are complex numbers.[1]  The normalized values of these limits are respectively 0.5 and 1.0 cycles/sample. This has the advantage of simplicity, but (similar to natural units) there is a potential disadvantage in terms of loss of clarity and understanding, as these constants \scriptstyle T and \scriptstyle f_s are then omitted from mathematical expressions of physical laws.

The simplicity offered by normalized units is favored in textbooks, where space is limited and where real units are incidental to the point of a theorem or its proof. But there is another advantage in the DSP realm (compared to physics), because \scriptstyle T and \scriptstyle f_s are not "universal physical constants". The use of normalized frequency allows us to present concepts that are universal to all sample rates in a way that is independent of sample rate. An example of such a concept is a digital filter design whose bandwidth is specified not in hertz, but as a percentage of the sample rate of the data passing through it. Formulas expressed in terms of \scriptstyle f_s  and/or \scriptstyle T  are readily converted to normalized frequency by setting those parameters to 1. The inverse operation is usually accomplished by replacing instances of the frequency parameter, \scriptstyle f ,  with \scriptstyle f/f_s  or  \scriptstyle f\cdot T.[2]

Alternative normalizations

Some programs (such as MATLAB) that design filters with real-valued coefficients use the Nyquist frequency (\scriptstyle f_s/2) as the normalization constant. The resultant normalized frequency has units of half-cycles/sample or equivalently cycles per 2 samples.

Sometimes, the unnormalized frequency is represented in units of radians/second (angular frequency), and denoted by \scriptstyle \omega.  When \scriptstyle \omega is normalized by the sample-rate (samples/sec), the resulting units are radians/sample. The normalized Nyquist frequency is π radians/sample, and the normalized sample-rate is 2π radians/sample.

The following table shows examples of normalized frequencies for a 1 kHz signal, a sample rate \scriptstyle f_\mathrm{s} = 44.1 kHz, and 3 different choices of normalized units. Also shown is the frequency region containing one cycle of the discrete-time Fourier transform, which is always a periodic function.

Units Domain Computation Value
cycles/sample  [-½, ½]  or  [0,1]  1000 / 44100 0.02268
half-cycles/sample  [-1,1]  or  [0,2]  1000 / 22050 0.04535
radians/sample  [-π,π]  or  [0,2π]  2 π 1000 / 44100 0.1425

Notes and citations

  1. See Aliasing
  2. Carlson, Gordon E. (1992). Signal and Linear System Analysis. Boston,MA: ©Houghton Mifflin Co. pp. 469,490. ISBN 8170232384.

See also