Author: Subj: Keyw: Date: [Robert W Yoder] Digital Signal Processing Fourier Sat Jul 28 1990 07:02 [Note: The FOURIER directory on the disk contains all the programs mentioned below. They were written for the HP 28, and merely ported to the HP 48; no effort was made to redo them using more powerful 48 commands. -jkh-] Here is a set of programs for digital signal processing. Some have been posted before, and some are modifications of prior postings. The DFT and FFT are the fastest/smallest I've found. The Two-Dimensional Fourier programs are all new. These are posted as a set because many of them call others in the set. The following programs are called, but not listed here: "FAST" is a program thats sets the HP28 to maximum speed. [Note: since the 48 is already at full speed, I omitted all calls to the FAST program. -jkh-] "ROUN" is a program that cleans up the output to eliminate the inherent computational errors involving fractional parts containing trailing 9's, or infinitesimal values. I highly recommend using it. [Note: Replaced by -10 RND in the disk version. -jkh-] Included are: Discrete Fourier Transform (also does inverse) Fast Fourier Transform Inverse Fast Fourier Transform Fourier Transform (selects FFT or DFT depending on size) Inverse Fourier Transform (selects FFT or DFT depending on size) Periodic Convolution Aperiodic Convolution Two Dimensional Fourier Transform Inverse Two Dimensional Fourier Transform Axis Shifter for use with Two Dimensional Fourier Transforms -----------------------------------------------------------------------------Discrete Fourier Transform input: level 2; vector input: level 1; '1' for for fourier transform, '-1' for inverse transform output:level 1; transformed vector -----------------------------------------------------------------------------Fast Fourier Transform by lehmann_a%ELDE.EPFL.CH@VM1.NoDak.EDU input: level 2; vector output:level 1; transformed vector -----------------------------------------------------------------------------Inverse Fast Fourier Transform by: lehmann_a%ELDE.EPFL.CH@VM1.NoDak.EDU input: level 2; vector output:level 1; transformed vector -----------------------------------------------------------------------------Fourier Transform FT checks size and calls FFT if size is a power of 2, else calls DFT. input: level 1; vector output:level 1; transformed vector -----------------------------------------------------------------------------Inverse Fourier Transform INVFT checks size and calls FFTI if size is a power of 2, else calls DFT. input: level 2; vector output:level 1; transformed vector -----------------------------------------------------------------------------Periodic Convolution NOTE: Input vectors MUST be of same size! input: level 2; vector input: level 2; vector output:level 1; convolved vector of same size -----------------------------------------------------------------------------Aperiodic Convolution input: level 2; vector input: level 1; vector output:level 1; convolved vector of size size(v1) + size(v2) - 1 -----------------------------------------------------------------------------Two Dimensional Fourier Transform NOTE: Number of rows, and number of columns, must be an even power of two. Pad matrix with zeroes if necessary. input: level 2; matrix output:level 1; transformed matrix -----------------------------------------------------------------------------Inverse Two Dimensional Fourier Transform NOTE: Number of rows, and number of columns, must be an even power of two. Pad matrix with zeroes if necessary. input: level 2; matrix output:level 1; transformed matrix -----------------------------------------------------------------------------Axis Shift for Two Dimensional Fourier Transforms Shifts axis from upper right corner to center of matrix, by swapping quadrant 2 with quadrant 4, and swapping quadrant 1 with quadrant 4. NOTE: Number of rows, and number of columns, must be an even. Pad matrix with zeroes if necessary. input: level 2; matrix output:level 1; shifted matrix -Robert Yoder 306 Hawkins Graduate House, West Lafayette, IN 47906 (317)495-6845 Internet: ryoder@ecn.purdue.edu "Flame all you want, We'll post more." UUCP: ryoder!pur-ee Apologies to Jay Leno & Doritos. Bitnet: ryoder@ecn.purdue.edu@purccvm.bitnet