Pseudo-Random Pulse Sequences

Author

Erik Jensen
Dept. of Physics
University of Windsor
Windsor Ont. Canada
email: ejensen@server.uwindsor.ca

December 1, 1993

Introduction

This package defines a few routines that are useful for working with Pseudorandom Sequences.  These sequences (also called Maximum Length PseudoRandon Sequences or MLPRS's) have been used in optimizing time-of-flight spectroscopies in the Physical Sciences (neutron beam and molecular beam scattering). In a chopped beam experiment, the total flux through a conventioanl chopper is 1/N, where N determines the maximum resolution of the system. If N is large (say 1023) then the total flux is very small (only 0.1%). If a pseudorandom sequence is used in the chopper, then the total flux can reach up to 50% (for N=1023,using a MLPRS there are now 512 slits instead of 1). The overall resolution of the chopped beam experiment is not degraded, but the total flux is increased significantly. In order to recover the desired signal, the recorded signal must be deconvolved, using the known chopper sequence. Depending on the contribution by background noise in the experiment, much higher ultimate signal-to-noise ratios can be obtained by this method, and/or much shorter experiment times. The routines accompanying this notebook are derived from algorithms and data presented in the papers below.

References

1. "Magnetically suspended cross-correlation chopper in molecular  beam-surface experiments", Review of Scientific Instruments 52(6), p. 789 (1981), by G. Comsa, R. David and B.J. Schumacher.
2. "Generation of pseudorandom sequences for use in cross-correlation  modulation", Review of Scientific Instruments 63(8), p. 3852 (1992),  by D.D. Koleske and S.J. Sibener.

Using the package

The pseudorandom sequence is defined by two integers, n (the length of the sequence is 2^n-1) and M (a seed value, see below). Seed values that produce a valid pseudorandom sequence have been  tabulated in Ref. 2. From these two numbers, the package "PseudoRandom.m" can determine the pseudorandom sequence {a1, a2, ..., aN} where the ai are either 1 or 0. 

The package will also calculate the self convolution of the sequence (=2^(n-1) for a shift of 0, =2^(n-2) for non-zero shift). Also, the convolving matrix and deconvolving matrix can be worked out (this uses a lot of memory for n larger than 7 or so).

Table 1: Recursion Coefficients

Base 10 values for the recursion coefficients which produce Maximum Length Pseudorandom Sequences (MLPRS's) (from Table III of Koleske and Sibener)
n 		N  		 M's (seed values)
2 		3  		  3
3 		7  		  3
4 		15 		  9
5 		31 		  5,15,23
6 		63 		  3,27,39
7 		127		  3,9,15,29,39,43,63,75,111
8 		255		  29,43,45,77,95,99,135,207
9 		511		  17,27,45,51,89,95,111,119,125,135,149,163,175,
									  183,189,207,219,275,287,315,335,347,383,399
10		1023	  9,27,39,45,101,111,139,197,...
11		2047	  5,23,43,45,71,99,101,113,123,...
12		4095	  83,105,123,125,153,209,235,263,...

mySequence1= PRSequence[3,3]
myMatrix= PRConvolutionMatrix[mySequence1];
myInverseMatrix= PRDeconvolutionMatrix[mySequence1];

PRConvolution[mySequence1,0]
PRConvolution[mySequence1,1]

MatrixForm[myMatrix]
MatrixForm[myInverseMatrix]
MatrixForm[myMatrix . myInverseMatrix]

mySequence2= PRSequence[4,9]
mySequence3= PRSequence[10,9]