dticfield group [ sub-group i icyclic spectral analysis, cyclostationary, cyclic spectrum, strip...

112
NAVAL POSTGRADUATE SCHOOL Monterey, California AD- A261 715 .. DTIC MAR 24 1993 THESIS IMPLEMENTATION OF CYCLIC SPECTRAL ANALYSIS METHODS by Nancy J. Carter December, 1992 Thesis Advisor: Herschel H. Loomis, Jr. Thesis Co-Advisor: Raymond F.Bernstein, Jr. Approved for public release; distribution is unlimited. 93.05969 9I 3 3 ...

Upload: others

Post on 24-Mar-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

NAVAL POSTGRADUATE SCHOOLMonterey, California

AD- A261 715

.. DTICMAR 24 1993

THESIS

IMPLEMENTATION OF CYCLIC SPECTRALANALYSIS METHODS

by

Nancy J. Carter

December, 1992

Thesis Advisor: Herschel H. Loomis, Jr.Thesis Co-Advisor: Raymond F.Bernstein, Jr.

Approved for public release; distribution is unlimited.

93.059699I 3 3 ...

Page 2: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

DISCLAIEl' NOTICE

THIS DOCUMENT IS BEST

QUALITY AVAILABLE. THE COPY

FURNISHED TO DTIC CONTAINED

A SIGNIFICANT NUMBER OF

PAGES WHICH DO NOT

REPRODUCE LEGIBLY,

Page 3: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

UNCLASSIFIEDSECURITY CLASSIFICATION OF THIS PAGE

REPORT DOCUMENTATION PAGEla. REPORT SECURITY CLASSIFICATION lb. RESTRICTIVE MARKINGS

UNCLASSIFIED _________________

2a SECURITY CLASSIFICATION AUTHORITY 3. DISTRIBUTION/AVAILABILITY OF REPORT

2b. DECLASSIFICATION/DOWNGRADING SCHEDULE Approved for public release; distribution is unlimited

4. PERFORMING ORGANIZATION REPORT NUMBER(S) 5. MONITORING ORGANIZA•TION REPORT NUMBER(S)

6a.' NAME OF PERFORMING ORGANIZATION 16b. OFFICE SYMBOL 7a. NAME OF MONITORING ORGANIZATION

Naval Postgraduate School tfa abE) Naval Postgraduate School

6c. ADDRESS (City, State, and ZIP Code) 7b. ADDRESS (City, State, and ZIP Code)

Monterey, CA 93943-5000 Monterey, CA 93943-5000

8a.'NAME OF FUNDING/SPONSORING 18b. OFFICE SYMBOL 9. PROCUREMENT INSTRUMENT IDENTIFICATION NUMBER, ORGANIZATION [ (if applicable)

8c. ADDRESS (City, State, and ZIP Code) 10. SOURCE OF FUNDING NUMBERS

ELEMENT NO. NO. NO. ACCESSION NC

11. TITLE (Include Security Classification)

IMPLEMENTATION OF CYCLIC SPECTRAL ANALYSIS METHODS (U)

12. PERSONAL AUTHOR(S)

Carter, Nancy J.

SMaster's Thesis , FROM TO COUNTr192 1S 16. SUPPLEMENTARY NOTATIONDcebr19The views expressed in this thesis are those of the author and do not reflect the official policy or position

of the Department of Defense or the United States Government.17. COSATI CODES 18. SUBJECT TERMS (Continue on reverse if necessary and identify by bocg number)

FIELD GROUP [ SUB-GROUP Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectralI correlation algorithm, fast fourier transform accumulation method

19. ABSTRACT (Continue on reverse if necessary and identify by block number)

Phase-shift keyed (PSK) signal modulation methods are coming into increasing use in modern communications.

" This thesis describes the implementation of three methods of computing the cyclic spectrum to determine the

presence of PSK signals. The Strip Spectral Correlation Algorithm (SSCA) and the Fast Fourier Transform (FFT)

Accumulation Method (FAM) both estimate the cyclic spectral plane. The Sub-FFT Accumulation Method

(SUBFAM) program computes the Spectral Correlation Function (SCF) for a set of possible spectral frequencies for

a single cycle frequency. The results of algorithm performance a~re presented along with a discussion of promising

areas for performance enhancement and automation of signal detection and classification.

20•. DISTRIBUTION/AVAILABILITY OF ABSTRACT I21. ABSTRACTf SECURITY CLASSIFICATION

SUNCLASSIFIED/UNLIMITED [] SAME AS RPT. []DTIC USERS UNCLASSIFIED22a. NAME OF RESPONSIBLE INDIVIDUAL 122b. TELEPHONE (Include Area Code) I 22c. OFFICE SYMBOL

Herschel H. LoomisT Jr. (/408) 656-3214 I EC/LM

OD FORM 1473, 84 MAR 83 APR edition may be used until exhausted SECURITY CLASSIFICATION OF THIS PAGE

All other editions are obsolete UNCLASSIFIEDi

Page 4: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Approved for public release; distribution is unlimited.

Implementation of Cyclic SpectralAnalysis Methods

by

Nancy J. CarterLieutenant Commander, United States Navy

B.S., University of Maryland College Park, 1981

Submitted in partial fulfillmentof the requirements for the degree of

MASTER OF SCIENCE IN ELECTRICAL ENGINEERING

from the

NAVAL POSTGRADUATE SCHOOLDecember 1992

Author:

er

Approved by:Herschel H. Loomis, r., Thesis Advisor

Raym" F. Bernstein, Jr., Th is Co-Advisor

Michael A. Morgan, ChairmanDepartment of Electrical and Computer Engineering

ii

Page 5: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

ABSTRACT

Phase-shift keyed (PSK) signal modulation methods are

coming into increasing use in modern communications. This

thesis describes the implementation of three methods of

computing the cyclic spectrum to determine the presence of PSK

signals. The Strip Spectral Correlation Algorithm (SSCA) and

the Fast Fourier Transform (FFT) Accumulation Method (FAM)

both estimate the cyclic spectral plane. The Sub-FFT

Accumulation Method (SUBFAM) program computes the Spectral

Correlation Function (SCF) for a set of possible spectral

frequencies for a single cycle frequency. The results of

algorithm performance are presented along with a discussion of

promising areas for perfor-nance enhancement and automation of

signal detection and classification.

___________ 0 For

NTIS GRA&zDTIC TAB

Unarmounced 0SJusificatil 0

"ByDi8trjbUtj,/,

DitAveaidiT

iaiAvi__abilty Code,,Avail ...........iiid

Diat $Po1

Sqoa

Page 6: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

TABLE OF CONTENTS

I. INTRODUCTION . . . . . . . . . . . . . . . . . . . .. 1

A. BACKGROUND .................. ................... 1

B. THESIS GOALS ................. .................. 2

II. FFT ACCUMULATION METHOD.. ............. 6

A. THEORY ................... ..................... 6

B. IMPLEMENTATION ............... ................. 8

1. Input Channelization .......... ............. 8

2. Windowing ................. .................. 9

3. First FFT ................. .................. 9

4. Downconversion .............. ................ 9

5. Multiplication .............. ................ 10

6. Second FFT ............ .................. 10

7. Data Reduction .......... ................ 11

C. PERFORMANCE ............ ................... 11

III. STRIP SPECTRAL CORRELATION ALGORITHM ... ....... 28

A. THEORY ................. ..................... 28

B. IMPLEMENTATION ........... ................. 30

1. Input Channelization ........ ............. 30

2. Windowing ............. .................. 31

3. First FFT ............. .................. 31

4. Downconversion .......... ................ 31

iv

Page 7: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

5. Replication . . . . . . . . . . . . . . . . . 2

6. Multiplication . . . . . . . . . . . . . . . . 32

7. Second FFT ............ .................. 32

8. Data Reduction .............................. 33

C. PERFORMANCE ............ ................... 33

IV. SUB-FFT ACCUMULATION METHOD ....... ............ 50

A. THEORY ................. ..................... 50

B. IMPLEMENTATION ............... ................. 51

C. PERFORMANCE ............ ................... 51

V. ALGORITHM PERFORMANCE .......... ................ 55

VI. CONCLUSIONS ................ ..................... 57

A. SUMMARY ................ ..................... 57

B. RECOMMENDATIONS ............ ................. 57

APPENDIX A. FAM PROGRAM USE ....... ............. 59

APPENDIX B. FAM PROGRAM LISTING ....... ........... 61

APPENDIX C. SSCA PROGRAM USE ........ ............. 74

APPENDIX D. SSCA PROGRAM LISTING ...... ........... 76

APPENDIX E. SUBFAM PROGRAM USE ...... ............ 87

APPENDIX F. SUBFAM PROGRAM LISTING ...... .......... 89

LIST OF ABBREVIATIONS ............ ................. 103

LIST OF REFERENCES ............. .................. 104

INITIAL DISTRIBUTION LIST ........ ............... 105

v

Page 8: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

I. INTRODUCTION

A. BACKGROUND

The field of cyclic spectral analysis is growing in

importance as non-stationary modulation schemes proliferate in

modern communications. Traditionally, spectral analysis

methods have assumed that signals of interest were stationary

or had non-time-varying statistical parameters. This

assumption is untrue for the cyclostationary signals created

when using pulse or carrier amplitude modulation, phase or

frequency carrier modulation or digital pulse or carrier

modulation. Gardner [Ref. l:pp 419-453] discusses many of

these signal types. Spread spectrum modulation techniques

such as direct sequence PSK and frequency-hopped FSK also

exhibit temporally varying spectral features [Ref. l:pp 453-

457]. Reference 2 provides a tutorial on cyclic spectral

analysis.

Cyclic spectral analysis methods take advantage of

spectral variation over time by correlating spectral

estimations at discrete time intervals to locate signals that

may not otherwise be identified. A direct sequence signal

with a very wide bandwidth may be indistinguishable from a

noisy background in the frequency spectral estimate of

Figure 1 [Ref. 3:pp 2-9 - 2-10]. But this signal becomes

1

Page 9: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

clearly identifiable in the cyclic spectral estimate of

Figure 2.

One cyclic spectral technique is the frequency smoothed

cyclic periodogram method (FSM) [Ref. 1:pg 464]. This has

been implemented in the Cyclic Spectral Analysis Software

Package [Ref. 4] as the program sxaf. Hereafter, this

software will be referred to as the SSPI package or the FSM.

This method was used to generate Figures 1 and 2.

Unfortunately, the FSM is less efficient than time smoothing

methods for general spectral estimation [Ref. 5:pg 38].

B. THESIS GOALS

The purpose of this thesis is to implement two time

smoothing algorithms, the FFT Accumulation Method (FAM)

[Ref. 5:pp 44-47] and the Strip Spectral Correlation Algorithm

(SSCA) [Ref. 5:pp 47-48] . The FAM is less computationally

complex than the FSM and the SSCA less so than the FAM. Both

methods have been written to be compatible with the SSPI

package. By integrating FAM and SSCA into the SSPI package

future research may more easily be done in algorithm

performance comparison and enhancement.

Both the FAM and SSCA accept input data generated by the

SSPI utility program pam. They also generate results

compatible with the SSPI plotting utility plot_sxaf. Each

program may optionally generate output in a format compatible

with the MATLAB [Ref. 6] package which is in common use at the

2

Page 10: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Naval Postgraduate School. Input and output data are in ASCI7

file formats.

Throughout this thesis the same BPSK signal data is used

to illustrate the implementations of FAM and SSCA. A

representative signal sample is plotted in Figure 3. No noise

was added to this signal. By estimating the frequency

spectrum at different points in time, it is evident in Figure

4 that the spectral features do indeed vary temporally.

Chapter II describes the implementation of the FAM.

Chapter III describes the implementation of the SSCA. Chapter

IV describes a utility to estimate cycle frequencies for a

given baseband frequency. The Sub-FFT Accumulation Method

(SUBFAM) program (Ref. 7] gives a quick result for a specific

subset of the spectral plane. Chapter V discusses specific

algorithm performance comparisons. Finally, Chapter VI

presents conclusions and recommendations for future areas of

research.

3

Page 11: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

-I'S

0.

Figure 1 Power Spectral Density of BPSK Signal in Noise

(Ref. 4:pg 2.8]

Figure 2 Cyclic Spectral Estimate of Direct Sequence Signal

in Noise [Ref. 4:pg 181

4

Page 12: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

2

\iI I0.51

OF/ IF

0 10 20 0 40 50 60 70 80 90 1O(

Figure 3 Typical BPSK Signal Data

/ 4 l

Figure 4 Time Sequence Spectrum of Typica!. BPSK Ligna!

Page 13: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

II. FFT ACCUMULATION METHOD

A. THEORY

The FFT Accumulation Method (FAM) [Ref. 5:pp 44-47] is a

Fourier transform of correlation products between spectral

components smoothed over time. Periodicities in the spectral

components then become detectable. The cyclic spectral plane

as shown in Figure 5 ranges in frequency from -f,/2 to +f,/2,

and in cycle frequency from -f, to +f, where f, is the sampling

frequency. For each unique (f,,aq) cell in Figure 5, the FAM

cross-spectral estimate is defined to be [Ref. 5:pg 441:

P-I -i2wra

r=0

The FAM auto-spectral estimate is defined to be

[Ref. 5:pg 44]:

P-I -i2rqSxxI (nL, f, •= X7,(rL, fk)X;(rL, fj)g,(n-r)e (2)

Z=0

6

Page 14: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

where: j is the average frequency bin lk+e)/2

q is the difference or bandwidth frequency k-•

g,(n-r) represents the Hamming window.

The FAM was implemented by forming an array from x(kT)

(0 s k s N-I) with rows which are N' points long from the

input sample data. The starting point of each succeeding row

is offset from the previous rows starting position by L

samples. A Hamming window is applied across each row which is

then Fast Fourier transformed and downconverted to baseband.

The result at this point is a two-dimensional array with

columns representing constant frequencies. Each column was

point-wise multiplied in turn with the conjugate of the

columns resulting from processing y(kT) (0 s k s N-I). Each

resultant product vector was Fast Fourier transformed and the

low frequency half placed into the final cyclic spectral plane

at the appropriate location in the cyclic spectral plane.

Figure 6 shows a block diagram for the FAM cross-spectral

estimate.

The following subsections in this chapter discuss in

detail what has been described in the previous paragraph. The

cycle frequency resolution of FAM is Aoe = f,/PL [Ref. 5:pg 44]

where f, is the original data sampling rate. The frequency

resolution of FAM is Af = f,/N' [Ref. 5:pg 44] . The time-

frequency resolution product is AtAf = PL/N' [Ref. 5:pg 45].

7

Page 15: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

The command line format for calling the FAM program is

provided in Appendix A. The FAM source code listing is

provided in Appendix B.

B. IMPLEMENTATION

1. Input Channelization

The input sample data is formed into a two-dimensional

array. The array row length is equal to the number of input

channels N'. For a given number of input sample points N, a

row size of N', and a chosen offset L, there are P = (N-

N')/L - N/L rows formed. The choice of N' must take into

consideration that ideally the time-frequency resolution

product must be much greater than one [Ref. 5:pg 403. N'

should also be a power of 2 to avoid truncation or zero-

padding in the FFT routines. L should be chosen to be less

than or equal to N'/4.

The completely filled array is P rows by N' columns.

Figure 7 shows how a small array is filled from a discretely

sampled signal x(kT) when N'=16, P=8 and L=4. The number

inside each cell represents the value of k used to index on

x(kT) to fill that location in the array.

Figure 8 shows the magnitude of the original data for

the example BPSK signal organized into the P by N' array where

N=512, N'=32, L=4 and P=128. The input data is assumed to be

complex with a real and imaginary component to each sample

8

Page 16: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

point. Figure 9 shows a single row of the array. The phase

changes of the BPSK are evident.

2. Windowing

A Hamming window [Ref 7:pg 467] is applied to each row

of the array. The equation for the Hamming window is:

w(r) =0.54-0.46cos( -7_l 0 • r s N1-1 (3)

A 32-point Hamming window is plotted in Figure 10. It

is applied to both the real and imaginary parts of the complex

example array. The magnitude of the resultant array is shown

in Figure 11.

3. First FFT

Each row of the windowed data array is Fast Fourier

transformed to reveal the first spectral components. The

resultant array is still indexed P rows by N' columns but now

the column index relates to a specific bin of spectral

frequencies. Figure 12 illustrates this relationship.

Figure 13 shows the results of FFTing the BPSK example.

4. Downconversion

Each row of spectral components is downconverted to

baseband through multiplication with the complex exponential,

- i2xkL

e N'

9

Page 17: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

where: m is the row index, 0 s m s P-I

k is the column index, 0 s k s N'-I

The magnitude of the exponential is unity over the

array but the phase shows considerable variation. Figure 14

shows the phase of the exponential over the P by N' array.

Figure 15 shows the phase for one representative row. The

magnitude of the array remains unchanged from Figure 13.

5. Multiplication

For each cell in the cyclic spectral plane, one column

of the array is multiplied with the conjugate of another

column. The separation of the columns is determined by the

desired frequency separation or cycle frequency (=fk-f•e). The

mid-point between the columns is the frequency bin of interest

(f=(fk+f,)/2). Figure 16 shows two columns to be conjugate

multiplied for use in filling a specific f,a cell. Figure 17

illustrates the f,oi bin values in the cyclic spectral plane

for N'=4. Figure 18 shows the corresponding two column

indices used to form the product vector which is used to

produce the cells of Figure 17.

6. Second FIT

The product from the previous multiplication is FFT'd

to yield a P-point result. Only the middle of the resulting

spectrum is retained and stored into the designated f,a cell.

The upper and lower ends are undesireable because of increased

10

Page 18: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

estimate variation at the channel pair ends [Ref. 5:pg 45].

Figure 19 illustrates which part of the estimate is retained

and placed into the cell. Figure 20 shows the final result of

the FAM auto-spectral process on the example BPSK signal.

7. Data Reduction

The FAM program typically generates large output data

files. For convenience, an option may be chosen to reduce the

amount of output. By comparison sorting for the largest a

value in an f,a cell, the number of a slices output is reduced

from N'P/2 to N'. Overall FAM program execution time

increases accordingly to accomplish the sorts.

Figure 21 illustrates the output full cyclic spectral

plane storage array before sorting. Figure 22 shows the

output array after data reduction has been completed. Figures

23 and 24 plot the resulting spectral half-planes without and

with data reduction respectively.

Since all cells have an equal number of a values, all

sorts are of equal complexity. Further work on data reduction

would require selection of a largest a value from widely

varying numbers of a values depending on the choice of N, N'

and L.

C. PERFORMANCE

An established method of evaluating the complexity of an

algorithm is to determine the number of floating point

11

Page 19: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

operations that must be performed. For this estimate it is

assumed that an auto-spectral estimate is being computed and

the data is complex in every step. It is also assumed that

the Hamming window coefficients and the downconversion

coefficients have been previously computed and stored for

later use. Each N-point FFT requires (N/2)*log2 N complex

floating point multiplies (Ref. 8:pg 5061 or 4*(N/2)*log2 N

real floating point multiplies. The cost of any output data

reduction is not considered here.

Applying the window ....................... 2*P*N'

First FFT ................................. 2*P*N'*log2 N'

Downconversion ............................ 4*P*N'

Multiplication ............................ 4*N'*N'*P

Second FFT ................................ 2*N'*N'*P*log 2P

Total: (6+4*N')*P*N' + (2*P*N')*(og02 N' + N'*log 2P) (4)

Since P-N/L (5)

Total: (6+4*N')*NN'/L + (2*NN'/L) (log2N' + N'log2 N/L) (6)

12

Page 20: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

3' R

00 0', ~o 3

2~is /2 1/ ~

S+ f

\. 2

Figure 5 Generic FAM Cyclic Spectral. Plane

13

Page 21: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

x cample dLta yample data

InputInputChannelization CbAnnelization I

FatFourier IFast Fourier

Figre l'ock Diga fFMCossetrals r simx

-7.

Page 22: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

C o l :• - In d e x •.; - =

0 2 3 5 7 0 I I 2 13 :4 :51 23 4 i9 7 :1 ' 1n

± lIi I .. . ..iI • "4 :5 l's :7 03 :9 Z2'. 22 23 24 z5

,._ 62762$ s 30 31 32 33 24.. ii..: i •

-4 " _ 7 - " ' • . 2 3 4 ."i-4 7 .

p II

Figure 7 Layout of A Sample Input Array Showing Input

Sample Storage for N'=16, N=48, L=4 and 2=8.

15

Page 23: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Figure 8 Example BPSK Signal Data Array, Xt -32, P-128, 1-4

Page 24: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

0.6.

08

06 r to 15 20 -ý

0. 1

/ /

0. 3.- \, /

; 'I

0 5 10 15 20 30 3

0. 7 '. - / •

/t

/'"

S///1\

O.3 /' / '\

0.1 -/ •

-7

Page 25: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Figu~.re 12. ExamDple BPSK Signal Data After Window-Jng

frequency -f /2 0 f /2 -1

F'igure 12 Generic Ar-ray Row After First FFT

Page 26: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

-,gre x3 c a -n~ 3PSK S49mai Data Afte= -~sz: FFT

Z-IgU1n /. /1-~ ftheDwcnesonSmnn-a

.i .... ...

Page 27: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

100;

50-7

-0'-

i \ \\

\i I \"

n-2 10 15 30 35

Figure 15 Phase For a Sincqle Row of Array

t I nd Ie

2 •IJ~ tI L{ {IL{I _

I Y -1 1 I'

P-1 iii - -

-I- lil I I t

-O f /2 -2 o t /2 -1

Figure 16 Generic Array Showing Two Columns to be

Multiplied, f - -1, a - 2

20

Page 28: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

A

�'1�'

- ¾/

/

- ii � / - I' U I A-i------

- �

N

\ ,*

'./ IN

Figure 17 Generic Array Showing f,� values

, N., N

N.

/ I

7

2. �1

-1 -, '' Il I 1 "/

/ /

I. I/ -' 'N

// Lu 01

N.N /

- - 1 1 /

Figure 18 Generic Array Showing Column Index Values

21

Page 29: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Co I,= I •,de x

0 1 2 3 4 5 6 7

Row Index #x

-t /2 0 o t. /2

Discard Discard

Retain

Figure 19 Retained Section of the Second FFT Results

22

Page 30: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

15.991

-0.5

0.0.

1 .92e+03

Figu~re 20 Final F~m Resul~ts of the BPSK E~camflPe,

X-512, DN'=32 and L-4.

23

Page 31: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

N ' .. . . . . . . . ......... ........... ...... ...... ........ ......

.. .... .... .... . .... . . . .... -- ------- ------ --- ----L 0

Figure 21 FAM Storage Before Data Reduction

24

Page 32: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

S.................. I ---------------------- ---- .... ------ ---

" ......... .. ..---------- ---- ---...... i..... i ..... N

Figure 22 FAM Storage After Data Reduction

25

Page 33: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

15.991 -

-0.5

0. i0. 0.

0-5

1.92e+03

Figure 23 FAM Result Without Data Reduction,

U-512, N'-32 and L=4.

26

Page 34: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

I'

15.991

-0.5

0.

0.5

31.

Figure 24 FAM Result With Data Reduction,

N-512, N'-32 and L=4.

27

Page 35: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

III. STRIP SPECTRAL CORRELATION ALGORITHM

A. THEORY

The Strip Spectral Correlation Algorithm (SSCA)

[Ref. 5:pp 47-48] is a Fourier transform of correlation

products between spectral and temporal components smoothed

over time. Periodicities in the spectral components then

become detectable. The cyclic spectral plane as shown in

Figure 25 ranges in frequency from -f,/2 to +f,/2, and in cycle

frequency from -f, to +f, where f, is the sampling frequency.

For each unique (fj,tq) strip in Figure 25, the SSCA cross-

spectral estimate is defined to be [Ref. 5:pg 471:

f An-i -i21rrS;;- (n, f_ q"&=)E =XT(r, fk)y.(r)g(n-r)e n(7)2 2 ,r-o

The SSCA auto-spectral estimate is defined to be

[Ref. 5:pg 47]:

(fk1q fa n-i q

(n, 2 2 a)t =_X(rfk)x.(r)g(n-r)e n (8)

28

Page 36: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

where: k is a multiple of the frequency resolution,

-N'12 s k s (N'/2)-1

q is a multiple of the cycle frequency resolution,

-N' s q s (N'-1)

g(n-r) represents the Hamming window.

The SSCA was implemented by forming an array from x(kT)

(0 s k r N-i) with rows which are N' points long from the

input sample data. The starting point of each succeeding row

is offset from the previous rows starting position by L

samples. A Hamming window is applied across each row which is

then Fast Fourier transformed and downconverted to baseband.

The result at this point is a two-dimensional array with

columns representing constant frequencies. Each row is

transposed and replicated L times for a total of PL columns.

Each column is then multiplied by a sample y(kT) (0 s k s (PL-

1)). Each resultant row of the array is Fast Fourier

transformed and placed into a strip of the final cyclic

spectral plane at the appropriate location. Figure 26 shows

a block diagram for the SSCA cross-spectral estimate.

The following subsections in this chapter discuss in

detail what has been described in the previous paragraph. The

cycle frequency resolution of SSCA is Aot = f,/N [Ref. 5:pg 481

where f, is the original data sampling rate and N is the

number of input samples used. The frequency resolution of

29

Page 37: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

SSCA is equal to the sampling rate divided by the number of

channels N', Af = f,/N, [Ref. 5:pp 42,48] . The time-frequency

resolution product is AtMf = N/N' [Ref. 5:pg 48].

The command line format for calling the SSCA program is

provided in Appendix C. The SSCA source code listing is

provided in Appendix D.

B. IMPLEMENTATION

1. Input Channelization

The input sample data is formed into a two-dimensional

array. The array row length is equal to the number of input

channels N'. For a given number of input sample points N, a

row size of N', and a chosen offset L, there are P = (N-

N')/L - N/L rows formed. The choice of N' must take into

consideration that ideally the time-frequency resolution

product must be much greater than one [Ref. 5:pg 401. N'

should also be a power of 2 to avoid truncation or zero-

padding in the FFT routines. L should be chosen to be less

than or equal to N'/4.

The completely filled array is P rows by N' columns.

Figure 27 shows how a small array is filled from a discretely

sampled signal x(kT) when N'=16, P=8 and L=4. The number

inside each cell represents the value of k used to index on

x(kT) to fill that location in the array.

Figure 28 shows the magnitude of the original data for

the example BPSK signal organized into the P by N' array where

30

Page 38: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

N=512, N'=32, L=4 and P=128. The input data is assumed to be

complex with a real and imaginary component :o each sample

point. Figure 29 shows a single row of the array. The phase

changes of the BPSK are evident.

2. Windowing

A Hamming window [Ref 7:pg 467] is applied to each row

of the array. The equation for the Hamming window is:

w(r) =0.54-0.46cos( 27[r ), 0 • r s N1-1 (9)AT'- 1

A 32-point Hamming window is plotted in Figure 30. It

is applied to both the real and imaginary parts of the complex

example array. The magnitude of the resultant array is shown

in Figure 31.

3. First FFT

Each row of the windowed data array is Fast Fourier

transformed to reveal the first spectral components. The

resultant array is still indexed P rows by N' columns but now

the column index relates to a specific bin of spectral

frequencies. Figure 32 illustrates this relationship.

Figure 33 shows the results of FFTing the BPSK example.

4. Downconversion

Each row of spectral components is downconverted to

baseband through multiplication with the complex exponential,

31

Page 39: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

- 2nkmL

where: m is the row index, 0 • m • P-I

k is the column index, 0 s k s N'-I

The magnitude of the exponential is unity over the

array but the phase shows considerable variation. Figure 34

shows the phase of the exponential over the P by N' array.

Figure 35 shows the phase for one representative row. The

magnitude of the array remains unchanged from Figure 33.

5. Replication

Each row is copied into one column of an empty N' by

PL array. It is then replicated in the L-1 adjacent columns.

Figure 36 illustrates this process.

6. Multiplication

Each column of the array is pointwise multiplied with

the conjugate of a sample value y(kT). There are PL-N columns

and PL samples from y(kT). Figure 37 illustrates the

conjugate multiplication process.

7. Second FFT

Each row from the previous multiplication is Fast

Fourier transformed to yield a PL-point result. Each

resulting vector is stored into a strip of the cyclic spectral

32

Page 40: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

plane. Figure 38 shows the final result of the SSCA auto-

spectral process on the example BPSK signal.

8. Data Reduction

The SSCA Program typically generates large output data

files. For convenience, an option may be chosen to reduce the

amount of output. By comparison sorting for the largest a

value in an f,u cell, the number of a slices is reduced from

N to N/L. Overall SSCA execution time increases accordingly

to accomplish the searches.

Figure 39 illustrates the output full cyclic spectral

plane storage array before sorting. Figure 40 shows the

output array after data reduction has been completed. Figures

41 and 42 plot the resulting spectral half-planes without and

with data reduction respectively.

Since all cells have an equal number of a values, all

sorts are of equal complexity. Further work on data reduction

would require selection of a largest a value from widely

varying numbers of a values depending on the choice of N, N'

and L.

C. PERFORMANCE

An established method of evaluating the complexity of an

algorithm is to determine the number of floating point

operations that must be performed. For this estimate i" is

assumed that an auto-spectral estimate is being computed and

the data is complex in every step. It is also assumed that

33

Page 41: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

the Hamming window coefficients and the downconversion

coefficients have been previously computed and stored for

later use. Each N-point FFT requires (N/2)*log2N complex

floating point multiplies [Ref. 8:pg 506] or 2*N*log2N real

floating point multiplies. The cost of any output data

reduction is not considered here.

Applying the window ........................ 2*P*N'

First FFT ................................. 2*P*N'*logN'

Downconversion ............................ 4*P*N'

Multiplication ............................ 4*N*N'

Second FFT ................................ 2*N*N'*Iog2N

Total: 2*N'*(6*P + 4*N + (2*P + 2*N)*log2N) (10)

since P-N/L (11)

Total: 2*N'*(C6*N/L + 4*N) + (2*N/L + 2*N)*log 2N) (12)

34

Page 42: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Aok

4 . '

4 22'

........." , . .

......- .¼ ..........

.. " , . L- ~ ,:\ 3. , . 4 ,.C -2 1\ 3

. ,\ *

.. ........ ..- ....... .. ....... . .... :....... _

. .. .. .. .....°° ........ .°•.... ,............ .... •

. ..-.-. . . .. . ..

.. .= =. a . .. ° . .. .. m ... o .. .. m-... Q ..-- .- . ...... ..

N, ' \ • " : . ..N

.... \.....

3, ,, 2 \ +, /2

"•, ........ . ., . ,- ...... .. •........ -

\ 4\• °,.. ... ...... -

-7f

Figure 25 Generic SSCA Cyclic Spectral Plane

35

Page 43: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

x auaple daata y sample ata

Input

Channelization

Fast FourierTransform

m owconver on

S Replication Conjuqation

Data Reduction.(opti onal)

I- I | _

Cyclic SpectralPlane

Figure 26 Block Diagram of SSCA Cross-Spectral Estimate

36

Page 44: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

0 1 2 3 4 5 6 7 8 9 10 11 12 i3 : 5

0 0 1 2 53 i S 1 6 7 8 9 10 11 i2 13 4 15

5 6 7 8 9 10 11 12 1314 ii is i 17 :8 i s

10 11 2Ž 13 i1 1 1 i 5 17 izs 19 20 2- - 3

3 i 3 14 ! 15 17 Is18 19 0 21 22 23 24 25 26 :7

Si 6 17 i 819 20 2ll 22 23 '4 " 25 27 28 29 30

3 20 i 22 23) 2 25 26 27 8 2 30 31 32 33 24i 35

5 24 s 26 27 -, TIZ9 30 31 32 33 343 35 36 37 ?3 391I- I .--?-17 2. . 33 3i 35 36 37 38 39 40 4 4_2 43 .4 45 7

Figure 27 Layout of A Sample Input Array Showing Iacut

Sample Storage for N'-I6, N-48, L-4 and P-a.

37

Page 45: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Figure 28 Exa~mple BPSK Signal. Data Array, N'=32, P-.128, L-n4

38

Page 46: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

t .6

; L

0.6L t

~10

0.8L/ / 1

\I

I I \

0 }. - ! ' ! I /

0 . 6 7 I \ "

0.0 152 5 00.4I

0.3-

0. 7- / , /

00 5 to 1.5 20 25 30 35Figure 30 Thirty-tw o BPoin Hamingna windowr

/

0 .4 '

0 .2

_

0 35Fiur.0 hr6-wo-on -in ino

/ \39

Page 47: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Figure 31 Example BPSK Signal Data After Windowing

Column Index0 1 2 ..- i

Row #xI I

frequency-f /2 0 = f /2 -I

Figure 32 Generic Array Row After First FFT

40

Page 48: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

i Isi

Figure 33 Example BPSK Signal Data After Fi--rsz F

0

Figure 34 Phase of the Downconversiofl Exponential

41

Page 49: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

100

50-

-50-

-150.-I

-200 0 5 10 15 20 25 30 35

Figure 35 Phase For a Single Row of Array

42

Page 50: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

. . . . . . . . . .... . .. . . . . . . . .. . . . . . .... . . ~....... . . . . . ..

. . .. . . . . . . . .

... . ............. ............ ..J....%......

V. . . .*. ............

Figure 36 Replication Process

43

Page 51: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Y, <

! * I Vi

........ .......... .... ,..0................° .ge ~ o .•° ... i ........ .... .... .... ... ..... r ..... .... • .... r .... ....Sb~o .... ....... .... ,........... , L ... . \ ............. ... ... ,.....

L ........•'•o] 'e'p' •q..° b~l.I .................

•---•.... ................. .... ....... .............7 .........

O i 2L0 //(P-1)L N'-'

:aK e F7 FoT row anc •, in s r

Figure 37 Multiplication of Columns by y*

44

Page 52: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

5.126-

-0.5

0.

0.

0.5479.

Figure 38 Final SSCA Results of the BPSK Example,

N-512, N'-32 and L-4.

45

Page 53: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

S.................. :. ................. ........... ...... -- - -- . . . . =---

,,N ......,.............. /............ ---------- -----....... -----

Figure 39 SSCA Storage Array Before Data Reduction

46

Page 54: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

N'N

, ........................... .. -------------- ------.

Figure 40 SSCA Storage Array After Data Reduction

47

Page 55: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

-0.5

0.

479.

Figure 41 BPSK Example Results Without Data Reduction,

N=5112, 171-32 and L=4.

48

Page 56: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

I I I I/ I

i

5.126 /-, f\APf

-0.5

0.

/

0.

0.5

31.

Figure 42 BPSK Example Results With Data Reduction,

N-512, N'-32 and L=4.

49

Page 57: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

IV. SUB-FFT ACCbMULATION METHOD

A. THEORY

In the course of this thesis work a need arose for a

flexible and customized Spectral Correlation Function (SCF)

[Ref. 7] to determine the presence of phase-shift keyed

signals in experimental data. The SCF [Ref. 71 is

represented:

N-I 2 2r

Sx r OSFxOSFye • (13)r=O

where:

N is the number of data samples used

f, is the intermediate modulation frequency

f, is the sampling frequency

OSF is a one-sided bandpass filter

The program written to implement this algorithm is named

the Sub-FFT Accumulation Method (SUBFAM) program to

distinguish it from the more general purpose FAM program. The

command line format for calling the SUBFAM program is provided

in Appendix E. The SUBFAM source code is provided in

Appendix F.

50

Page 58: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

B. IMPLEMENTATION

Figure 43 illustrates the operations perfcrmed in the

SUBFAM program. A set of N points is obtained from within a

file of signal data values. Each set of N points is processed

through a one-sided bandpass filter to remove either all

positive or negative frequencies as desired. Downconversion

of each file to baseband from the original sampling and

transmission frequency bands follows. The results are then

correlated through a complex conjugate multiplication. A

final N-point Fast Fourier Transform yields the spectral

correlation result.

C. PERFORMANCE

The SUBFAM program performed as required. Figure 44

illustrates the results of processing test data containing

phase-shift-keyed signal samples. The peaks at the chip

frequencies are apparent. Figure 45 shows the results of

correlating test data with data containing only white noise.

The lack of correlation between spectral features yields

results which are four orders of magnitude less than in the

successful signal detection of Figure 44.

51

Page 59: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

x cexple data 7 Za.MP1! data

r~~oe To

Rea N Saxple3 edN ape

I Bandp.33 B nd; a asr ilteri-ng

Downconvers~.on Dovmconversion

Yast Fourier

I Spectral Data

Figure 43 SUBFAN Program Block Diagram

52

Page 60: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

xl O"2.51

-I

II1.5-

0.5'-

0 500 1000 1500 2000 2500 3000 3500 4000 4500

Figure 44 SUBFAM Program Result With Signal, N-4096

53

Page 61: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

450,

400-

350-

300- I

150

200 I

50

00 500 1000 1500 2000 2500 3000 3500 4000 4500

Figure 45 SUBFAM Program Result With Noise, N=4096

54

Page 62: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

V. ALGORITHM PERFORMANCE

The complexity of the FAM and SSCA algorithms is estimated

in Chapter II Section C and Chapter III Section C

respectively. Both require on order of Nlog.N floating point

multiplies where N is the original number of sample points

used. Brown and Loomis [Ref. 9] explore the complexity of the

FAM, SSCA and FSM algorithms in some detail. Their results

are consistent with an order Nlog2N multiplies for FAM and

SSCA.

The cyclic spectral plane is symmetric about the f=O and

the a=0 axes for real signals. For the most efficient

performance it is only necessary to compute one quadrant of

the cyclic spectral plane. To compare the performance of FAM

and SSCA with FSM, complexity figures derived from Reference

9 for quadrant complexity will be used. The three algorithms

require the following numbers of floating point multiplies:

FAM Complexity (Ref. 9:pg 181

2NN'1og2(iN) - 8Nlog 2 (N') , 4NN' = 20N (14)N1

55

Page 63: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

SECA Complexity (Ref. 9:pg 20]

NN'Iog 2 (N) +2NN' 8Nlog 2 (N') + 12N (15)

FSM Complexity [Ref. 9:pg 16]

N2 + 2Nlog 2 (N) (16)

The complexity of four example cases with varying N and N'

are estimated below using equation (14), (15) and (16).

N N' FAM SSCA FSM

1024 64 5.3*10' 3.6*10' 106

2048 128 2.0*106 1.4*106 4.2*106

32,768 512 1.5*108 1. 1*108 109

1,048,576 8192 8.0*101° 7.0*1010 1012

It is evident that FAM and SSCA require substantially

fewer multiplies than FSM. Particularly with larger values of

N, FAM and SSCA require Nlog2N while FSM requires N2 floating

point multiplies.

56

Page 64: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

VI. CONCLUSIONS

A. SUMMARY

The purpose of this thesis was to implement the FAM and

SSCA for use in cyclic spectral analysis research. Both

algorithms were successfully implemented in a manner

compatible with the SSPI analysis package to facilitate future

work. By allowing the user a choice of two output file

formats, results may easily be used in either MATLAB [Ref. 6]

or SSPI [Ref. 41 for further signal processing applications.

It has been shown that the FAM and SSCA algorithms

generate results consistent with FSM but require substantially

fewer floating point multiplies than FSM. This is especially

true as the number of sample data points used increases.

B. RECOMENDATIONS

In the course of this thesis it has become apparent that

the FAM and SSCA algorithms consist of inherently parallel

operations. Roberts and Loomis explore these possibilities in

Reference 10. The high-level sequential nature of these

algorithms also lend them to pipelining architectures. By

combining a parallel or multi-processor approach with

pipelining a large improvement in performance should be

obtainable. This would be espectially true in applications

57

Page 65: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

requiring large sets of signal data samples or repeated,

time-sequenced cyclic spectral plane estimations.

Two areas which could benefit from further work are

automatic signal identification and signal parameterization

algorithms. The results from cyclic spectral analysis

algorithms such as FAM and SSCA may be input into Linear

Associator or Mapping neurocomputer networks as described in

Reference 11. Intensity transformations using digital image

processing techniques from Reference 12 also appear to have

promise. Both classes of techniques could have utility in

automatic signal identification and parameterization. They

also have the added benefit that they lend themselves to

parallel and pipelined computing architectures.

58

Page 66: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

APPENDIX A. FAM PROGRAM USE

Correct commands are:

for the cross-fami

fami inputfilel inputfile2 outputfile n nprime 1 Oflagfamn inoutfilel inputfile2 outputfile n nprime 1 Oflag red

or for the auto-fam

fam inputfilel outputfile n nprime 1 Oflagfam inputfilel outputfile n nprime 1 Oflag red

where: inputfilel is the file containing the x signal samplesinputfile2 is the file containing the y signal samplesoutputfile is where the spectrum values will be placedn is the number of samples to use from the inputfiles

and it must be a power of 2nprime is the group size of the input datasets and it

must be a power of 21 is the starting offset of subsequent datasets and

it must be a power of 2Oflag indicates the output filetype, ascii or binary

-asc for an ascii, MATLAB compatible file,full cyclic spectral plane

-plo for a plot sxaf, SSPI compatible file,half cyclic spectral plane

red reduces the amount of data output

note: the first two entries in every input file are expectedto be the datatype and n. datatype = 1 for realvalues, 2 for complex values. n is the number ofsamples contained in the file, one sample per line.

input file format:

datatype nsample #1sample #2

sample #n

59

Page 67: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

output file ASCII MATLA.B format:

nprime noutputil) (1)output(l) (2)

output (nprime) (n)

output file SSPI plot-sxaff format:

datatype (1 for real, 2 for complex)number -of -alphasalpha-minalpha-maxnumber-of-freqsfreqjninfreq~max

value of alpha #1number of freqs in #lfreq~minfreq~maxspectrum at freqjnin

spectrum at freq~max

value of alpha #alpha-maxnumber of freqs in #alpha-maxfreq~minfreq~maxspectrum at freq~min

spectrum at freq~max

60

Page 68: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

APPENJIX B. FAM PROGRAM LISTING

61

Page 69: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

-eI m 2:2f 2 fam fam.c Faae I

z n c .ae a zi•.>

-4n•u e -.mat: n >n -e 2m ee3 ze a r!:er e es>Is SSPc a:ff:. 2 fn :z7 -e :hme3 carter .thes s SSP-.F r a.- L x

ma'n (ar:;c, arcrv)Lnz argc;

coar *arav

:.'_:M X *x, :s3, '.%3, dwn v, s4;22>•LEX *tempfft, f y, si, * s2, -s2 , -w4ndcw;

x passes data to,.frcm fft routines3 rhcl~ results of FFTing sI-3 holds results of FF::ng y2

-is down conversion coeff:c:entss4 holds correlation multiply resultstempfft passes data to/from fft routinevi holds y samples from inputfile Z

holds x samples from Inputfile 1s2 holds channelized x samplesv2 holds channelized y sampleswindow holds Hamming window values

*./

.nt i,.,k, type, n, filen, nprime, p, l, drection,norm;int a,bc, cross,num f, max num f,data_type,maxnum alf;:nt tempi,temp],halfp, reduce, curr aif;.nt *Outint;float numreal,numimag,convfac,mainfac,num alf,f_min,f_max;float alpha_min,alpha -max,f-mm _all,f--.ax all;,,float tempreal, tempmmag, bigmag, tempmag;float twopi=6.23318530718;float *outreal;double z,y;char zynfilelnfile2,*outfile;FILE nifpl,*-nfp2,eofp;

check for the correct number of input argumentsthe correct commands are:

fam inputfilel inputfile2 outputfile n nprime I Oflag reduceor

fam inputfilel inputfile2 outputfile n nprime I Oflagor

fam inputfilel outputfile n nprime i Oflag reduceor

fam inputfilel outputfile n nprime I Oflag

where: inputfilel is where the x signal samples are expected to beinputfile2 is where the y signal samples are expected to beoutputfile is where the spectrum values will be putn is the number of samples to us- from the inputfwlesnprime is the group size of input datasets1 is the starting offset of subsequent datasetsOflag indicates the output filetype, ascii or binary

-asc tor an ascii, matlab compatible file, full plane-plo for a plota msxaf compatible file, half plane

reduce is an option to reduce the amount of output

62

Page 70: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:21 1992 fam/fam.c Page 2

note: datatvoe and n, are expected --3 ce at "_he tpo of the inut filiedatatype = 1 for real, 2 for complexn is the number of samples following

written by LCDR Nancy J. Carter, USN NPGS Monterey CA 01 Cctober 1992to implement the Frequency Accumuiation Method of cyclic spectral analysisas described in the Brown/Gardner/Loomis IEEE paper

20 October 1992 .... changed to ascii MATLAB output format22 October 1992 .... added plotsxaf output format compatible with SSPI23 November 1992 .... added option to reduce amount of output

/* CHECK INPUT VALUES *//* */

if ((argc != 7)&&(argc != 8)&&(argc != 9))fprintf("fam .... fatal error\n");printf("....... incorrect number of calling arguments\n");printf( "........ correct formats are:\n");printf("........... fam inputfilel •-nputfile2 outputfile n nprime 1 Oflag reduce\n");printf("............ fam inputfilel inputfile2 outputfile n nprime I Oflag\n");printf("............ fam inputfile outputfile n nprime i Oflag reduce\n");printf("............ fami inputfile outputfile n nprime 1 Oflag\n");printf(".......... where\n");printf(" .......... inputfilel contains the x samples\n");printf("............ inputfile2 contains the y samples\n");printf(" .......... outputfile will contain the results\n");printf(".......... n is the number of input samples to use\n");printf("............ nprime is the group size of input datasets\n");printf(" .......... 1 is the offset of subsequent datasets\n");printf(" .......... Oflag is the output file format\n");printf(" ......... Oflag = -asc, an ascii file is produced\n");printf(" ......... Oflag = -plo, a plotsxaf file is produced\n");printf(" .......... reduce is an option for reduced amount of output\n");exit 0;i

if (argc==7) { /* this is an auto-fam, no output reduction /cross=0;infilel=argv[I];outfile=argvf[2];n=atoi (argv [31 ) ;nprime=atoi (argv[4]);l=atoi (argv[5 7);reduce=0;

if ((argc==8)&&(arqv(7](0]!='r')) { /* this is a cross-fam, no output reduction '

cross=l;infilel=argv[l];infile2=argv(2];outfile=argv(3];n=atoi(argv(4]);nprime=atoi (argv(5 1);l=atoi(argv[6]);reduce=O;I

if ((argc==8)&&(argv[7] [0]=='r')) { /* this is an auto-fam, with output reductioncross=0;

63

Page 71: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:21 1992 fam/fam.c Page 3

infile!=arav[ 1];outfile=argv [2 ];n=atoi(argv[3]);nprime=atoi (argv [4]);l=atoi(argv[5]);reduce=1;I

if (argc==9) { /* this is a cross-fam, with output reduction "/cross=l;infilel=arqv [11];infile2=argv [21;outfile=argv[3];n=atoi (argv[4]);nprime=atoi (argv [5]);1=atoi(argv [161);reduce=l;I

/* verify that n, nprime and 1 are powers of 2i=n%2;if (i!=O){

printf("fam .... fatal error\n");printf(". ...... calling argument n is not a power of 2\n");exit (;I

i=nprime%2;if (i!=O){

printf("fam .... fatal error\n");printf(" ....... calling argument nprime is not a power of 2\n");exit (;

if (jW=O)printf("fam .... fatal error\n");printf(". ...... calling argument 1 is not a power of 2\n");exit 0;

/* *//* open input file 1, prepare to get the x signal sample data *//* *ifpl = fopen(infilel,"r");fscanf(ifpl,"%i %i", &type, &file n);/* verify that file n is greater than or equal to n */if (file n<n){

printf("fam .... fatal error\n");printf(" ....... inputfilel does not contain enough samples\n");fclose(ifpl);exit );I

/* find p - the number of datasets(nprime long) */p= ((n-nprime)/1);/* *//* */

READ IN DATA SAMPLES *//* */

/* allocate space to read in the sample values *//* */

64

Page 72: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:21 1992 fam/fam.c Page 4

s1= (COMPLEX*) calioco(n, sizeof (CO-'MPLEX) )if (sl==NULL)nrintf("fam,.. .insufficient space to allocate sl\n");exit 0;

if (type==1)j

/* read in the real sample values ~

for (i=O; i < n; i++)ffscanf (ifpl, '%Ie\n",&numreal);si [ii .r=numreal;slitu.i=O.O;

else

/* read in the complex sample values ~

for (i=O; i < n; i++)ffscanf (ifpl, "%e %e\n", &numreal, &numimag);slitu.r=numreal;sl~il .i=numimag;

/* close the input file #1/

fclose (ifpl);

/* if this is a cross-fam go get y samples ~

if (cross==1)f

/* open inputfile2, prepare to get the y signal sample data *

ifp2 = fopen(infile2,11r");fscanf(ifp2, "%i %u1-",&type,&file n);1* verify that file_n is greater than or equal to n ~

*if (file-n<n)fprintf("fam. ... fatal error\n");printf( ........ inputfilel does not contain enough samples\n");fclose(ifpl);exit 0;

/~READ IN Y DATA SAMPLES *

/~allocate space to hold the sample values *

yl= (COMPLEX*) calloc (n, sizeof (COMPLEX));if (yl-=NULL)f

printf("fam. ... .insufficient space to allocate yl\n");exit 0;

1* 65

Page 73: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 122~992 famifam.c Page 5;

read inthe complex samnie -.a.'-,es

for (i=C; i<n; i--)ff scanf (ifp2, "Ie 3.e\n, &numreal, &nuc:maq);yl~ii].r=numreal;yl~i].i=numimag;

/* close the inputfile2 ~

f close (ifp2);/* end if cross=l /

/* FORM DATASETS *

/* allocate space to hold the p-by-nprime datasets

s2= (COMPLEX**) calloc (p, sizeof (COMPLEX*));if (s2==NULL)fprintf("fam.. .insufficient space to allocate s2\n");exitoL;

for (i=O; i~p; i++)fs2 [i = (COMPLEX*) calloc (nprime, sizeof (COMPLEX));if (s2[i]==NULL)fprintf("fam... .insufficient space to allocate s2\n");exit 0;

/* form p datasets of nprirne samples from the original sample stream *

for (i0O; i<p; i++)jfor (j=O; j<nprime; j++)f

s2[iJ [3]=slfk];

/* if this is a cross-fain form y datasets *

if (cross==l)f

/* allocate space to hold the p-by-nprime datasets ~

y2= (CONPLEX**) ca~lloc (p, sizeof (COMPLEX*));if (y2==NULL)fprintf("fam... .insufficient space to allocate y2\n");exit 0;

for (i-0; i<p; i++)(y2 (i = (COMPLEX*) calloc (nprime, sizeof (COMPLEX));if (y2[i]==NULL){printf("fam,.. .insufficient space to allocate y2\n");exit 0;

66

Page 74: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:21. 1992 famlfam.c Page 6

form p dataset~s 31" norime samploes from r-*e orgnlsample szream

for (i=0; :.<p; +--++)f

for (3=0; -<roprime; -- t)

k=i'KL+7;

y2 [i] KI'=y1Lkl;

/4end if cross=l '

/* APPLY WINDOW TO DATASETS 4

/* allocate space to hold the window multiplicand values '

window= (COMPLEX*) calloc (nprime, sizeof (COMPLEX));if (window==NULL)fprintfC'fam. ... i~nsufficient space to allocate sl\n");exit 0;

/4 calculate the window values for the "Inprime" sample wide window '

for (i=0; i<nprime; i++)fy=(twopi-i) / (nprime-l);z-cos (y),window[i].r= 0.54 - (0.46*z);window(iJ .i= window Li] .r;

/4 apply the window to all rows of s2

for (i=0; i<p; i++)f

for (D=0; ]<nprime; j++){s2[i]I l].r=s2 Li][jl].r~window~j] .r;s2(i] Eji.i=s2[i] [ji.i~window[j] .i;

/* if this is a cross-fain apply window to y2 *

if (cross==l)

for (i=0; i<p; i++)f

for (j=0; 3<nprime; j++){y2Lil H] .r=y2[il H] .r~window~j] .r;y2[i] H] .i=y2 Li] H .i~wilndowfljJ.1;

I/4 end if cross=l 4

/* FFT EACH DATASET ROW 4

/* allocate space to hold rows of data for passing to the FFT routine 4

67

Page 75: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 1-2:21 1992 fam/faxn.c Page 7

x=(CCMIPLEX*) Call7oc(nprime, sizeof (COMPLEX))if (x==NULL)

zcrintf ("f am... insufficient sloace to allocat-e xnr");exit 0);

/* allocate space to hold rows of results from the FFT routine

s3= (COMPLEX**) calloc (p, sizeof (COMPLEX*));if (s3==NULL)

printf("'fam... i~nsufficient space to allocate s3\n");exit 0;

for (zi=O; i<p; i±+)fs3 [i]= (COMPLEX*)calloc (nprime, sizeof (COMPLEX));if (s3[i1==NULL){

printf("fam... .insufficient space to allocate s3\n");exit 0;

/* take an FFT ,)f each row of s2

/~set values in arguments sent to fft ~direct ion=1;norm=1;for (i=O; i<p; t-++)f

/~copy rc-d of s2 into complex arrayfor (j=O; j<r'orime; j++)j

x~jJ=s2 [i]!j];

1* go get FFT performedfft (x, nprime, direction, norm);/* copy x va uoes into a row of s3for (j=O; 3<iorime; +)

s3fiIfj3=x~jJ;

/* if this is a cross-fam, take an Fr'2 of each row of y2 ~

if (cross==1)I

/* allocate space to hold rows of results from the FFT routine ~

y3= (COMPLEX*) calloc (p, sizeof (COMPLEX*));if (y3==NULL)fprintf("fam... .insufficient space to allocate y3\n");exit 0;

for (i=O; 1<p; i++)(y3 fi] =(COMPLEX*) calloc (nprime, sizeof (COMPLEX));if (y3(iJ==NULL){prinif ("famn... .insufficient space to allocate y3\n");

Page 76: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:21 1992 fam/faxn.c Page 8

exit 0;

I" copy row of y2 into complex array

for (i=e; 7<nprime; j++)f

/ go get FFT performedf ft (x, nprime, direction, norm);/* copy x values into a row of y3 *

for (3=0; j<nprime; 3++H{y3[ij1 [jJ=xlj];

/* end if cross=1 l

1~DOIANCONVERT EACH ROW /

/* allocate space to hold the downconversion multiplicands

dwnconv=(COMPLEX**)calloc(p,sizeof(COMPLEX*));if (dwnconv==NULL)lprintf("fam.. .insufficient space to allocate dwnconv\n");exit 0;

for (i=O; i~p; i++)fdwnconv[i)=(COMPLEX*)calloc(nprime,sizeof(COMPLEX));if (dwnconvfi]=~=NULL)fprintf("fam.. .insufficient space to allocate dwnconv\n");exit 0;

I. downconvert each of the transform sequences *

1 ~ calculate the down conversion multipliers ~

mainfac~twopi~l/nprime;for (i0O; i~p; i++)(

for (1=0; j<nprime; j4-+){convfac=i~j~mainfac;dwnconv~i] j] .r=cos(convfac);dwnconvlil[]I.i= (-1.O)*sin(convfac);

1* multiply downconversion factor against each frequency value ~for (i=O; i<p; i++)ffor (j=O; j<nprime; 3++)fnumreal~s3 ( i I[j).rdwnconvt[i I j I.r -s3 ( i jJI. i*dwnconv (i Ij.I;s3(iJ] j I .i=s3 i]I j]I .r*dwnconvli [J .I i + s3(i] [ji .i dwnconv (i] I .r;s3(i] (j).r=numreal;

if (cross==1)

69

Page 77: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:21 1992 fam/farn.c Page 9

in f this is a cross-fain downconvert v3 ~

multiply downconvers ion factor against each frequency valuefor (i=O; i<p; i++)f

for (3=0; ]<nprime; 3++-)(numreal=y3[i][ E'].r~dwnconv[i] [:1.r -y3[ii [:1 .-dwnconv[ij,] U.i;y3[i] [j].i-=y3(i] [j].r*dwnconv[i] f3).2. -ý- y3[i] £jJ .-*dwnconv~i] U]1.ry3 [I I [ J .r=numreal;

/* end if cross=1 l

1* MULTIPLY COLUMNS

/* allocate space to hold the correlation mult~piy (column multiply) results ~

a=npriine*p/2;s4= (COMPLEX**) calloc (a, sizeof (COMPLEX*));if (s4==NU`LL)(

printf("fam.... insufficient space to allocate s4\n");exit 0;

for (i=O; i<a; i--)fs4 [i] =(COMPLEX*) calloc (nprime, sizeof (COMPLEX));if (s4(i]==NULL){printf("fam.... insufficient space to allocate s4\n");exit 0,

/* allocate space to hold columns of s4 for passing to the FFT routine *

tempfft= (COMPLEX*) calloc (p, sizeof (COMPLEX));if (ternpfft==NULL)fprintf ("fam.... .insufficient space to allocate tempfft %i by 1\n",p);exit 0;

/~set values in arguments sent to fft *

direction-1;norm-1;if (cross==O) (/'* auto-fain*

1* multiply columns of s3

for (a=nprime-l; a> -1; a--)for (b-0; b<nprime; b++)f

/* multiply the columns of s3 with other columns of s3 ~for (j=O; 3<p; 34-+)(tempfft[j] .r=(s3(j] [a].r*s3(j[] b].r)+(s3[j] [a] .i*s3[j] [b] .i);tempfft~j] .i=(s3[j] [a].i*s3Lj] [b] .r)-(s3[j] [a] .r*s3[J] [bi .i);

/~FFT EACH COLUMN~

1* go get FFT perforined *

70

Page 78: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:2.1 1992 famifam.c Page 1-

iff:(tempfft,p, direc::c-n, norm);". copy tempfft result vaiiies back in~zo a row cff 3for (j=(p/4); 3<((3*p/4).j-); 3+~+)j

s4(c] [b]=tempfft[,1;

i/* end for b=O .../* end for a=O ...1/* end auto-fain

else /* cross-fainm

/* multiply columns of s3 with y3 ~

for (a=nprime-1; a> -1; a---)Ifor (b=O; b<nprime; b++)f

1* multiply the columns of s3 with other columns of y3 ~for (j=O; j<p; 3++){tempf f t (3 .r=(s3[(j ] [a I.r*y3 3 [bi r) +(s3[j (a] .i 3 (j [bi i) ;tempf ft (jJI .i= (s3(3 j] La] .y3f[ [bi r) -(s 3 3 [a]I .ry3 j] [b I.i) ;

/~FFT EACH COLUMN

/~go get FET performedfft (tempfft, p, direction, norm);/* copy tempfft result values back into a row of s4 *for (j=(p/4); j<((3*p/4)1l); 3+4+)

c=( (nprime-a-1) *p/2)+]>(p/4);s4[c] [b]=tempfftfj];

I/* end for b=O.. .

/* end for a=O .../* end cross-fain .

/* OUTPUT ~

halfp=p/2;if (reduce==O) I /* do not reduce the amount of output ~

if (((argc==8)&&(argv[7i1]1=='a'))Ii((argc==7)&&(argv[6Jf1]==~'a')))f/* make an ascii output file of the whole spectral plane *//* open the output file and place header information in it/

ofp = f open (outf ile, ,wit)max_num -alf=nprime~p/2;max_num -f=nprime;fprintf(ofp,"%i %i\n",max -num -alf,rnax-num-f);for (i=O; i<max num alf; i.++)f

for (j=O; j<nprime; 3+I+)ffprintf(ofp,"%.e %e\n",s4[i1[3].r,s4[i][j].i);

/* end for i= ...I/* end for i= ... *

fclose (ofp);I/* end if ascii ...

else { /* make a plot-sxaf no reduced output file/

71

Page 79: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:21 1992 fam/fam.c Page 11

cpen the output file and place header infcrrat-,cn in it '

of-o = f open (outf ile, "W") ;/* place header information in the file '/1

data-type=2; /'* real-or-complex *max-num-alf=nprime*p/2; ,'' num aloha ~alpha-min=0.0; ,'* aloha -min'alpha-max=l.0; /* alpha-rmax 'max-lnum f=nprime; /* max num. f '

f mm _all= -0.5; /* f mm~allf-max all= 0.5; /* f max-all ~fprintf (ofp,%i %i go-e -9.e %m i%.e -%.e n",da ta -type,max-num-alf,aloha-mmn,alpha -max,max -nuxn f,f min -all,f max -all);for (i=0; iznprime; i++) { /* group of lines *

for (j=0; j<(p/2); 3++)f /* line in the group '/* place alpha line header information in file '

curr alf=(m*p/2)+,; /* alpha number ~num -f=nprime-i; /* nuxn ff -min= -0.5+(0.5*i/nprime); 1* f-ruin 'f max= 0.5-(0.5*i/nprime); 1* f-max *

fprintf(ofp,"9%i %i %.e 9%e\n",curr -alf,num f,f min,f max);for (k=i; k<nprime; k-s+) { /* points on the line *

tempi=(p/2* (nprime-1) )-( (k-i) *p/2)+j;tempj=k;numreal=s4[tempil ftempj] .r;numimag=s4[tempi] [tempj] .i;fprintf(ofp, "%e %e\n",numreal,nuxnimag);/* end for k= ...

/* end for j= ... */* end for i= ... *

/* close the output file *

fclose (ofp);/* end else ...

/* end if reduce=0 ... *

else f /* reduce the amount of output ~

if ( ((argc==9) && (argjv[7] 11=='a') )I I ((argc==8) && (argv(61 (11=='a'))/* make an ascii output file of the whole spectral plane *//* open the output file and place header information in it '

ofp, fopen(outfile,"W");max-nuxn-alf=nprime;max Tnum-f=nprime;fprintf(ofp,"%i Ii\n",max Inum -alf~max num f);for (i0O; m<max num. aif; i++)f

for (j=0; j<nprime; j++){numreal=s4(i*halfpl (ji.r;numimag=s4[i*halfp] [j).m;bmgmag=sqrt (numreal*numreal + numimag*numimag);for (k=l; k<halfp; k++) j /* look for largest value ~

tempreal=s4[i*halfp+k] [jI.r;tempimag=s4[i*halfp+k] [ji .i;tempmag=sqrt (tempreal*tempreal + tempimag*tempmmag);if (ternpmag>bigmaq) /* found a larger value ~

bimgag-tempmag;numreal-tempreal;numimag=t emp imag;

72

Page 80: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:21 1992 fam/fam.c Page 12

/ * end if t erpmag>b1-gmnao. ../* end if k=l ...

fr~rintf(ofp,"%.e I~e\f",numnreal',r:.umimag);/* end for 3=. ..

/* end for i=. ...

fclose (ofp);/* end if ascii .. .

else f /* make a plot sxaf reduced outout file/* open the output file and place header information in itofp = fopen(outfile,"w");/* place header information in the file7data type=2; /* real or complex ~max-num-alf~nprime; 7- -num-alpha ~alpha-min=0.0; /* alpha-min/alpha-max=1.0; /* alpha-max *

max num. f=nprime; /* max num. f ~f_mm i_all= -0.5; /* f-min-all*f -max -all= 0.5; /* f-max-all ~fprm-ntf(ofp,"%i %i %e %e %i %e %e\n",data_type,max-numrtalf,alpha-min,alpha max,max num. f,f min all,f max-all);for (i=0O; i<nprime; i+-+)f{ /* group of lines *

/* place alpha line header information in file ~curr alf=i; /* alpha */nuxn f=nprime-i; /* num-f ~f -min= .-0.5+(0.5*i/nprime); I* f-mm *

f -max= 0.5-(0.5*i/nprime); /* f max ~fprintf(ofp,,"%i %i %e %e\n",curr alf,num. f,f min,f max);for (k=i; k<nprime; k++)f { * points on the line *

tempi= (halfp* (nprime-1) )- ((k-i) *halfp);temp j=k;numreal=s4(tempij Etempil .r;nunmimag=s4(tempi] [tempj] .i;bigMaq=sqrt (numreal*numreal + numimag*numimag);for (j=l; j<halfp; j++){ /* look for the largest value .

tempreal=s4[tempi+j] ttempj] .r;tempimag=s4(tempi+j] EtempjJ .i;temprnag=sqrt (tempreal*tempreal + tempimag*tempimag);if (tempmag>bigmag) { /* found a larger value

baigmag~tempmag;numnreal=tempreal;numimag=t emp imag;/ * end if tempmag> ...

/* end for j= ...fprintf(ofp, "%e %e\n",nuxnreal,numimag);

/* end for k- ... */* end for i=...

/* close the output file *

f close (o fp) ;/* end else binary ... *

1/* end reduce the amount of output ~

/* end of main ~

73

Page 81: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

APPENDIX C. SSCA PROGRAM USE

Correct commands are:

for the cross-ssca

ssca inputfilel inputfile2 outputfile n nprime 1 Oflagssca inputfilel inputfile2 outputfile n norime 1 Oflag red

or for the auto-ssca

ssca inputfilel outputfile n nprime 1 Oflagssca inputfilel outputfile n nprime 1 Oflag red

where: inputfilel is the file containing the x signal samplesinputfile2 is the file containing the y signal samplesoutputfile is where the spectrum values will be placedn is the number of samples to use from the inputfiles

and it must be a power of 2nprime is the group size of the input datasets and it

must be a power of 21 is the starting offset of subsequent datasets and

it must be a power of 2Oflag indicates the output filetype, ascii or binary

-asc for an ascii, MATLAB compatible file,full cyclic spectral plane

-plo for a plotsxaf, SSPI compatible file,half cyclic spectral plane

red reduces the amount of data output

note 1: the first two entries in every input file areexpected to be the datatype and n. datatype = 1 for realvalues, 2 for complex values. n is the number of samplescontained in the file, one sample per line.

note 2: error may occur using the reduce option if

(n-nprime)/nprime is not an integer.

input file format:

datatype nsample #1sample #2

sample #n

74

Page 82: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

output ASCII MATLAB format:

raprime noutput(1) (1)outputil) (2)

output (nprime) (n)

output SSPI plot sxaf format:

datatype (1 for real, 2 for complex)number of alphasalphaminalphamaxnumber of freqsfreqminfreqrnax

value of alpha #1number of freqs in #lfreqmin in-#lfreqmax in #loutput for freqmin_in_#1

output for freqinax-in_#1

value of alpha #alphamaxnumber of freqs in #alphamaxfreqrninfreqmaxoutput for freqmin_in_#alphamax

output for freqmax_in_#alphamax

75

Page 83: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

APPENDIX D. SSCA PROGRAM LISTING

76

Page 84: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:22 1992 strip/ssca.c Page 1

-include <stdlib.h>ýincIude <stdio.h>#include <math.h>4inciude "/home3/carter/thesis/SSPI/pam/ffc.c"4include "/home3/carter/thesis/SSPI/pam/radix.c"main(argc,argv)int argc;char *argv[];fCOMPLEX *x,**s3,**dwnconv;COMPLEX *tempfft,*sl,*yl,**s2,*window;:nt i, j,k,type,n,nprime,p,i,r,direction,norm;nt a,cross,file n,m,reduce,sizes3,redindex;int tempi, tempj,tempk, templ;int *outint;float numreal,numimag, convfac, mainfac;float bigmag, tempmag, tempreal, tempimag;float twopi=6.28318530718;float *outreal;double z,y;char *infilel,*infile2,*outfile;FILE *ifpl,*ifp2,*ofp;/* x passes data to/from fft routine

s3 holds results of operations after first fftsl holds the x sample values from inputfile 1yl holds the y sample values from inputfile 2s2 holds the channelized x input data from sl */

/*

check for the correct number of input argumentsthe correct commands are :

ssca inputfile outputfile n nprime 1 Oflagssca inputfile outputfile n nprime 1 Oflag reducessca inputfilel inputfile2 outputfile n nprime 1 Oflagssca inputfilel inputfile2 outputfile n nprime 1 Oflag reduce

where: inputfilel is where the x signal samples are expected to beinputfile2 is where the y signal samples are expected to beoutputfile is where the spectrum values will be putn is the number of input samples to usenprime is the group size of input datasets1 is the starting offset of subsequent datasetsOflag indicates the output file type

-asc for an ascii, matlab compatible file-plo for an ascii, plotsxaf compatible file

reduce is an option to generate a reduced amount of output

note 1: type and file n are expected to be on the first line of the inputfile/stype = 1 for real, 2 for complex,file n = number of samples following the first line

note 2: error may occur if (n-nprime) is not evenly divisible by nprimewhen using the reduce option

maintenance history.... written by LCDR Nancy J. Carter, USN NPGS Monterey CA 01 October 1992

77

Page 85: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:22 1992 strip/ssca.c Page 2

* 15 Oct 92.... .copied from current ;version of faxn.o to alter to ssca algor-,:h1m..modified to perform ssca per Srown/Gardner/Loomis paper

.... .20 Oct 92.... .made outputfile ascii rformat MAATLAB compatible*. .'Z2 Oct 92.... .made an output format SSPI plot-sxaf compatible

...24 Nov 92.... .added option for a reduced amount of output

CHECK INPUT VALUES ~

if ((argo ! 7)&&(argc !=8)&&(argc!=9)printf("ssca.. .fatal error\n");printf( ........ incorrect number of calling arguments\n");printf( ........ correct formats are:\n");printf("......... ssca, inputfile outputfile n nprime 1 Oflag\n");printf( ......... ssca inputfile outputfile n nprime 1 Oflag reduce\n");printf( ......... ssca inputfilel inputfile2 n outputfile nprime 1 Oflag\n");printf( ......... ssca inputfilel inputfile2 n outputfile nprime 1 Oflag reduce\n');printf( ........... where\n");printf( ..... inputfilel contains the x signal samples\n");printf("..... inputfile2 contains the y signal samples\n");printf( .... outputfile will contain the results\n");printf(" n is the number of input samples to use\n");printf(" nprime is the group size of input datasets\n");printf( ..... 1 is the offset of subsequent datasets\n");printf("..... Oflag is the output file forrnat\n");printf("..... Oflag = -aso, a MATLAB file is produced\n");printf("..... OfJlag = -plo, a plot sxaf file is produced\n");printf(" reduce is an option for reduced amount of output\n");exit 0;

if (argc==7) f /* this is an auto-ssca, no output reduction *cross=0;infilel=argv[l];outfile=argv(2];n=atoi (argv[1311);nprime=atoi (argv(4]);l=atoi (argv[515);reduce=O;

if ((argc==8)&&(argv[7] [Ofl-'r')) f 1* this is a cross-ssca, no data reductioncross=1;infilel=argv El];infile2=argv (21;outfile=argv 13];n=atoi(argv[4]);nprime=atoi(argv(5]);l=atoi (argv(6]);reduce=0;

if ((argc==8)&&(argv(7] [0]=='r')) f /* this is an auto-ssca, with data reductioncros s-O;infilel-argv[lJ;outfile-argv(2];n-atoi(argv(3]);nprime-atoi (argv[4]);l-atoi (argv[51);

78

Page 86: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:22 1992 strap/ssca.c Page 3

reduce=1;

"if (argc==9) { /" this is a cross-ssca, with data reductioncross=l;infilel=argv [1];infile2=argv 121;outfile=argv[3];n=atoi (argv [4]);nprime=atoi (argv [5]);l=atoi(argv[6]);reduce=l;

/* verify that n, nprime and 1 are powers of 2 */,=n%2;

if (iW=0){printf("ssca... fatal error\n");printf(" ....... calling argument n is not a power of 2\n");exit 0;

}i=nprime%2;if (iW=O){

printf("ssca.. .fatal error\n");printf(". ...... calling argument nprime is not a power of 2\n");exit (;

Ij=1%2;if (J!=O){

printf("ssca.. .fatal error\n");printf(" ....... calling argument 1 is not a power of 2\n");exit 0;

/* *1

/* open input file 1, prepare to get the x signal sample data */

ifpl = fopen(infilel,"r");fscanf(ifpl,"%i %i",&type,&file n);/* verify that file n is at least equal to n */if (filen < n){

printf("ssca... fatal error\n");printf(". ...... inputfilel does not contain enough samples\n");fclose(ifpl);exit 0;

/* find p - the number of datasets(nprime long) *1p= ((n-nprime)/1);/* find one dimension of final data array */sizes3=p*l;/* */

/* READ IN DATA SAMPLES *//* *//* allocate space to read in the x sample values "/

sl- (COMPLEX*) calloc (n, sizeof (COMPLEX));if (sl==NULL){

printf("ssca... insufficient space to allocate sl\n");exit 0;

79

Page 87: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:22 1992 strip/ssca.c Page 4

if (type==l) f /* read in the reall samnie valuesfor (i=0; 3.<n; a.++) I

fscanf (ifpl, '%e\n", &numreal);sl[i] .r=numreal;sl[i] .i=O.O;

else f /* read in the complex sample values ~for (i0O; i < n; i++)f

fscanf(ifpl,"9oe %e\n",&numreal,&numimag);slifi].r=numreal;sl[i] .i=nuxnimag;

/4 close the input file 41 4

fclose (ifpl);

if (cross==l)

/* open -inputfile2, prepare to get the y signal sample data 4

ifp2 = fopen(infile2,"r");fscanf(ifp2,"%i %i",&type,&file-n);

/* verify that file -n is at least as big as n ~if (file n < n){printf("ssca. .. .fatal error\n");printf("I....... inputfile2 does not contain enough samples\n");fclose (ifp2);exit 0;

' allocate space to read in the y sample values 4

yl= (COMPLEX4 ) calloc (n, sizeof (COMPLEX));if (yl==NULL)fprintf("ssca. .. .insufficient space to allocate yl\n");exit 0;

/4 read in the complex sample values/

for (i-0; i < n; i+4-){fscanf (ifp2, "%e 9.e\n", &num~real, &numimag);yl~i] .r=numreal;yl[i] .i=nurnimag;

/* close the inputfile2 4

f close (i fp2);/* end if cross - 1.4

/ FORM DATASETS 4

80

Page 88: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:2.2 1992 strirp/ssca.c Page 5

allocate space to hold the p-by-n-prime dataset 3

s 2 =(COMP LEX*)caI-'o c (p, s izeo f(COI-TLEX*;~f (s2==NTJLL)fprintf("sSCa .. .zosufficient space to allocate s2\n");exit 0;

for (i=0; i<p; i+~-)s2 (ii =(COMPLEX*) calloc (nprime, s-zeof (COM4PLEX));if (s2Li]==NULL){printf("ssca. .. .insufficient space to allocate s2'\n');exit 0;

/* form p datasets of nprime samples from the original sample stream ~

for (i=O; i<p; i++)ffor (j=0; 3<nprime; 3++){k~i*l+j;sq2[i] [j]=sl[kJ;

/* APPLY WINDOW TO DATASETS *

/* allocate space to hold the window multiplicand values ~

window= (COMPLEX*) calloc (nprime, sizeof (COMPLEX));if (window==NULL)iprintf("ssca. .. .insufficient space to allocate sl\n");exit 0;

/* calculate the window values for the "nprizne" sample wide window

for (i=O; i<nprime; l+-)f

y= (twopi*i) /(nprirne-l);z=cos(y);window(i].r= 0.54 - (0.46*z);window(i) .i= window(i] .r;

/* apply the window to rows of s2 containing data '

for (i=O; i<p; i++)for (j=O; j<nprime; j++){

s2[i) U) .i=s2[iJ [j] .i*windowjljj.i;s2EiJ [ji.r=s2(i) U] .r*window[jl .r;

1* FFT EACH DATASET ROW *

/* allocate space to hold rows of s2 for passing to the FFT routine ~

Page 89: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:22 1992 strip,'ssca.c Page 6

x= (CCOLEX*)call-c (npr-rre, sizeof ý(CC-'ýLEX));if (x==NULL)printf("ssca... i~nsufficient space :o aliccate x'.n");exit 0;

/* allocate space to hold rows o.f results from the FFT rcutine

s3=(COMPLEX**)calloc(nprim.-e,sizeof(CC.MLEX*));if (s3==NULLI)printf("ssca .. .insufficient snace to allocate s3\n');exit 0;

for (--O; .,<nprime; -,+*)s3(i]=(COMPLEX*)calloc((p*1),sizeof(CCý.MLEX));~f (s 3 (i==NULL) fprintf("ssca .. .insufficient space to allocate s3\n");exit 0;

/* take an FFT of each row of s2

/~set values in arguments sent to fft ~direct ion=l;norm=1;for (i=O; i<p; i++) I

/ copy row of s2 into complex arrayfor (j=O; 3<nprime; 3++)fx(j]=s2(iJ (j];

1* go get FFT performed *fft (x, nprime, direction, norm);/* copy x values into lth column of s3r=i *1;for (j=O; 3<nprime; j++){

s3[ýjJ r]=x[jl;

1* DOWNCONVERT EACH ROW /

/* allocate space to hold the downconversion multiplicands

dwnconv= (COMPLEX* *) calloc (p, sizeof (COMPLEX*));if (dwnconv==NUjLL)fprintf("ssca .. .insufficient space to allocate dwnconv\n");exit 0;

for (i=O; i<p; i++){dwnconv(i]=(COMPLEX*)calloc(nprlme,sizeof(COI.WLEX));if (dwnconv(i]==NTULL)

printf(I'ssca .. .insufficient space to allocate dwnconv\n");exit 0;

82

Page 90: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:22 1992 strip/ssca.c Page 7

j d ownconvert each of the transform secuences a

calculate the down conversion multip)liers

mainfac=twopial! r'nDrime;for (rn=O; m<po; mn+-t-I,for (k=O; k<nprime; k++)Jconvfac=mainfac* (k- (nprime/2) +1) m;diwnconv(m] Ek].r=cos(convfac);dwnconv(m] (k].i= (-l.O)*sin(convfac);

'amultiply downconversion factor against each frequency value *

for (i=O; i<p; ,++s)ftempi=i* 1;for (j=O; 3<nprime; 3++)f

numreai=s3[j] [tempi] .r~dwnconvll] K].r - s3(-,] [tempi] l.*idwnconv[li'L]. Ks3[j] [tempi] .i=s3[j] [tempi] .r~dwnconv(i][K] .i. s3K3][tempi] .iadiwnconv[i][3H]rs3Ej] (tempi] .r=numreal;

/* REPLICATE COLUMNS ~

for (i=O; i<p; i++)fr=i*l;/* copy column into 1-1 adjacent columns *for (j=O; j<nprime; j++)f

for (k=l; k<l; k++)fs3[j] [r+kl=s3Ej] Er];/* end for k= ...

/* end for j= ...

/* end for i= ...

Ia MULTIPLY COLUMNS ~

if (cross==O) {/* auto-ssca ~

I* multiply columns of s3 with conjugate value of si *

for (a=O; a<slzes3; a++)Ifor (j=O; 3<nprime; j++){

s3(jI (a] .r=(s3(j] (a].rasl~a] .r)+(s3[j] [a] .iasl~a] .i);s3(jI (a].i=(s3(j] [a] .iasl(a] .r)-(s3(j] (a] .rasl[a] .i);

1/* end for a=O ...I* end auto-ssca, 1

else { 1 cross-ssca a

/* multiply columns of s3 with conjugate value of yl ~

for (a=O; a<sizes3; a++)for (j=O; j<nprime; j++){

s3[j] [a].r-(s3[j] [a] .rayl[a] .r)4-(s3[j] [a] .i*yl[a] .i);

83

Page 91: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:22 1992 strip/ssca.c Page 3

s3[• :a] .i (s3[• ra] .'_*y ! [a] .r)- (s3[-, "a'] . 'yi al

/ end for a=O. ..

"end crcss-ssca

FFT EACH ROW /

/" allocate space to hold rows of s3 for passing to the FFT routine I/

tempfft= (COMPLEX*) calloc (sizes3, sizeof (COMPLEX));if (tempfft==NULL) {

printf("ssca...insufficient space to allocate tempfft %i by i\,n",sizes3);exit );

/ * set values in arguments sent to fft /

direction=l;norm=l;for (,=O; ]<nprime; 3++)f

/* copy row of s3 into tempfft */for (k=O; k<sizes3; k++){

tempfft[k]=s3[]] [k];

/* go get FFT performedfft (tempfft, sizes3, direction, norm);/* copy tempfft result values back into a row of s3for (k=0; k<sizes3; k++){

s3[j] [k]=tempfft[k];I/} end for ]=0... /

1* *

/* OUTPUT/* */

if (reduce==O) { /* no output reduction *1if (((argc==7)&&(argv(6] [11=='a'))I I ((argc==6)&&(argv[5] [1]=='a'))) I

/* make an ascii output file full spectral plane *//* open the output file and place header information in it */ofp = fopen(outfile,"w");fprintf(ofp, "%i %i\n",nprime,sizes3);/* write out dqta values to file for plotting */

for (i=O; i<nprime; i++){

for (j=(; j<sizes3; j++){fprintf (ofp, "9e %ekn", s3 [i] [3].r, s3[i] [3] .,);

/* for j=O... ./* for i=O ... */

/* close the output file */fclose (ofp);I /* if ascii...

else f /* make a plot_sxaf output file half spectral plane 4/

/* open the output file and place header information in it */ofp = fopen(outfile,"w");a-0; /* alpha = 0 */fprintf(ofp,"%i %i %e %e %i %e %e\n",2,sizes3,0.0,1.0,nprime,-0.5,0.5);for (i-0; i<nprime; 1++) { /* group of lines */

for (j-0; ]<(sizes3/nprime); 3++) { /* line in the grouptempreal= -0.5+(0.5*i/nprime);

84

Page 92: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:22 1992 strip/ssca.c Page 9

tenpirnag= O.5-(O.5*i/nprime);fprintf(ofp,"%.i %-i %se %e\n",a, (npr:.me-i-),ternpreal,,tempimag);a=a+l;

(.k=O; k<(nprime-i); k++fl /* points on the line ~tempi~nprime-k-1;temp]=(ii-k) *sizes3/nprime+3;numreal=s3(tempi] Etempj] .r;numimag=s3[temnpil [temp]]l.i;fprintf(ofp,"9.e %e\n",numreal,nuxnimag);S/* end for k=...

/* end for 3= ...I/* end for i= ...

/* close the output file *

fClo5e (ofp);/* end if else *

/* end if reduce=O ...if (reduce==1) I /* reduce the amount of output data *

if (((argc==8)&&(arg-vt6l El)=='a')) I ((argc==7)&&(argjv[5] tl=='a')))f/* make an ascii output file full spectral plane *//* open the output file and place header information in it ~ofp = fopen(outfile,"w");fprintf(ofp, "%i %i\n",nprime,p);redindex=l;/* write out data values to file for plotting *for (i=O; i<nprime; i++){

for (j-0; j<p; j++){numreal=s3(i) tj*redindex] .r;numimag-s3[i) [j*redindex] .i;bigmag=sqrt (numreal*nuxnreal + numimag*numimag);for (k=l; k<redindex; k++) f /* look for largest value *

tempreal=s3Ei) (j*redindex +k] .r;tempima~g=s3[i] tj*redindex +k] .i;tempmag=sqrt (tempreal*tempreal + tempirnag*tempimag);if (tempmag>bigmag) f /* found a bigger value, swap ~

b iglnag=t empmag;num~real=tempreal;numimag=t empimag;I/* end if tempmag> .... *

/* end for k=1 ... *fprintf (ofp, h%e %e\n", numreal, numimag);

/* for j=O. ...}/* for i=O...*

/* close the output file *

f close (ofp) ;I/* if ascii ...

else f 1* make a plot_sxaf output file with reduction half spectral plane */* open the output file and place header information in it ~ofp = fopen(outfile,"W");redindex=s izes3 /nprime;a=O; /* alpha = 0 */fprintf(ofp,"%i %i %e %e %i %e %e\n",2,nprirne,0.O,1.0,nprime,-0.5,0.5);for (i=0; i<nprime; i++) f /* nprime alpha levels ~tempreal- -O.5+(0.5*i/nprime);tempiniag= 0.5-~(0.5*i/nprime);fprintf(ofp,"%i %i %e %e\n",a, (nprime-i),ternpreal,tempimag);a-a+l;

85

Page 93: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:22 1992 strip/ssca.c Page 10

for (k=0; k<(nprime-i); k±+)i points at the alpha level Itempi=nprime-k-1;".ernp3=(i-sk)*redindex;numreal=s3Ctempil £temp~jl.r;numimag=s3[tempil [tempj] .1;bigMag=5qrt (numreal*numreal + aumirnag~numimag);for (j=l; j~redindex; ji-+) f /* line in the group ~tempreal=s3[tempi] [temp3 +31 .r;tempimag=s3[tempi] [tempj -s31J.1;temprnag=sqrt (tempreal*tempreal + tempJimag~tempimag);i-f (tempmag>bigmag) {/* found a bigger value, swap ~b igmag=t empmag;nuxmreal=tempreal;numimag=t emp imag;I/* end if temprnag> ....

/* end for j= ...fprintf (ofp, "%e 9.e\n", numreal, numimrag);

/* end for k=.../* end for i=...

/* close the output file *

fclose (ofp);/* end if else ~

/* end if reduce=1 ... *

86

Page 94: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

APPENDIX E. SUBFAM PROGRAM USE

Correct command is:

subfam n inputfilel offsetl freqzerol conjl inputfile2 offset2freqzero2 conj2 outputfile IOflag Itypes

where:n is the number of samples to use from each inputfile,

it must be a power of 2

inputfilel is the first file containing signal samples

offsetl is the initial sample position offset locationin inputfilel

freqzerol is the flag indicating which frequencymodification to perform on inputfilel, options are:

zn - zero neg freqs, shift pos freqs downzp - zero pos freqs, shift neg freqs upzz - don't do anything to frequency components

conjl is the flag indicating if conjugation of thedata from inputfilel is to be performed prior to

multiplication with data from inputfile2, options:y - yes, conjugate datan - do not conjugate data

inputfile2 is the second file containing signalsamples

offset2 is the initial sample position offset locationin inputfile2

freqzero2 is the flag indicating which frequencymodification to perform on inputfile2, options are:

zn - zero neg freqs, shift pos freqs downzp - zero pos freqs, shift neg freqs upzz - don't do anything to frequency components

conj2 is the flag indicating if conjugation of thedata from inputfile2 is to be performed prior to

multiplication with data from inputfilel, options:y - yes, conjugate datan - do not conjugate data

outputfile is where the spectrum values will be placed

87

Page 95: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

IOflag indicates the datatypes of inputfilel,inputfile2 and the outputfile. three characters aregiven to indicate the datatype of each file.valid datatypes are:

a - file is of type asciib - file is of type binaryex. "abb" means inputfilel is of type ascii,inputfile2 is of type binary and the outputfileis to be of type binary

Itypes indicates the types of data inside inputfileland inputfile2. the outputfile is always complexfloating point, real and imaginary components on thesame line. two letters must be given to indicatethe datatype for each input file. all types areconverted internally to complex floating point.valid types are:

r - single real floating point samples per linei - single integer sample per linec - two real floating point numbers per line,

representing the real and imaginary partsof a single sample

ex. "ic" means inputfilel has integer samplesand inputfile2 has complex floating point samples

example:

subfam 8192 datal.dat 64 zn n data2.dat 2156 zp youtputA.dat bbb rr

input file format: output file format:

sample #1 magnitude #1 phase #1sample #2 magnitude #2 phase #2

sample #n magnitude #n phase #n

88

Page 96: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

APPENDIX F. SUBFAM PROGRAM LISTING

89

Page 97: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:23 1992 testalg/subfam.c Page 1

iinclude <stdlib.h>#include <stdio.h>#include <math.h>#include "ihome3/carter/thesis/SSP:/pam/fft.c"4include "/home3/carter/thesis/SSPI/pam/radix.c"/* values used in up/down conversion */#define INTFREQ 49375000.0 /* intermediate signal freq in Hz "/#define SAMPTIME 0.0000051282 /* orig signal sampling period in sec 'i

main(argc, argv)mnt argc;char *argv[];fCOMPLEX *sl,*s2,*S3;int i,n,direction,norm,offl,off2,quartern,scaninteger, *readinteger, *z;float tempreal, tempimag, outputmag, outputphase, numreal, antfreq, t, convfac;float *readreal, *readimag, *y;char *infilel,*infile2,*outfile,*conjl,*conj2,*freqzerol,*freqzero2,*ioflag,*itypes;FILE *ifpl, *ifp2, *ofp;/*

subfam is a program which uses signal samples from two input files to calculatespectral values in a single diamond of the frequency-alpha plane

the command is :

subfam n inputfilel offsetl freqzerol conj1 inputfile2 offset2 freqzero2conj2 outputfile IOflag Itypes

n is the number of samples to use from each inputfile, must be pwr of 2

inputfilel is the name of the first input file containing signal samplesoffsetl is the initial sample position offset location in inputfilelfreqzerol is the flag indicating which frequency modification to perform

on inputfilel, valid options are:zn - zero negative frequency components, shift positive

components downzp - zero positive frequency components, shift negative

components upzz - don't do anything to frequency components

con]l is the flag indicating if conjugation of the data from inputfilel isto be performed prior to multiplication with data from inputfile2.valid options are:y - yes conjugate datan - do not conjugate data

inputfile2 is the name of the second input file containing signal samplesoffset2 is the initial sample position offset location in inputfile2freqzero2 is the flag indicating which frequency modification to perform

on inputfile2, valid options are:zn - zero negative frequency components, shift positive

components downzp - zero positive frequency components, shift negative

components upzz - don't do anything to frequency components

conj2 is the flag indicating if conjugation of the data from inputfile2 isto be performed prior to multiplication with data from inputfilel.valid options are:

90

Page 98: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:23 1992 testalg/subfam.c Page 2

y - yes conjugate datan - do not con]ugate data

outputfile is the filename where the spectrum values will be placed

IOflag indicates the datatypes of inputfilel, inputfile2 and outputfile.three letters must be given to indicate the datatypes for all files.valid datatypes are:a - file is of type asciib - file is of type binaryex. "abb" means inputfilel is of type ascii,

inputfile2 is of type binary, andthe outputfile is to be of type binary

Itypes indicates the number types of data inside inputfilel andinputfile2. the outputfile is always complex floating point,real and imaginary components on the same line. two lettersmust be given to indicate the number type for each input file.all number types are converted to complex floating point.valid number types are:r - single real floating point sample per linei - single integer sample per linec - two floating point numbers per sample on each lineex. "ic" means inputfilel has integer samples and

inputfile2 has complex floating point samples

sample useage:

subfam 8192 datal.dat 64 zn n data2.dat 2156 zp y outputA.dat bbb rr

maintenance history... created 01 October 1992, LCDR Nancy J. Carter, USN at NPGS Monterey CA... 10.15.92 - added freqzero options - njc... 10.16.92 - added error check on conjl and conj2 - njc... 10.25.92 - changed down/up shifting to same code as in old version

-------------------------------------------------------------------------- */

/* check for the correct number of input arguments */if (argc != 13){

printf("subfam.. .fatal error.. .incorrect number of calling arguments\n");printf("kn");printf(" .... correct format is: \n");printf(" subfam n inputfilel offsetl freqzerol conj1 inputfile2 offset2 \n");printf(" freqzero2 conj2 outputfile IOflag Itypes\n");printf ("\n") ;printf("\n");printf("...... n is the number of samples to use from each inputfile, must be pwr of 2\n")printf(". ..... inputfilel is a file containing the signal samples\n");printf(" ...... offsetl is the initial sample position offset in inputfilel\n");printf(" ...... freqzerol indicates type of freq zeroing and shifting to do on inputfilel\nprintf(" zn .... zero negative freqs and shift down\n");printf(" zp .... zero positive freqs and shift up\n");printf(" zz .... do not zero anything, do not shift\n");printf(" ...... conjl indicates if conjugation of data from inputfilel is\n");printf(" desired before multiplication\n");printf(" y .... yes conjugate data\n");

91

Page 99: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:23 1992 testalg/subfam.c Page 3

-r'ntf(" .... o do not con-jugate data\n");nri-tf(" usual setup is con]! = n, con]2 =yn)

orintf ("........ ;nrutfile2 is a file containing the signal salnples\n");pr-'ntf( .......offset2 is the initial sample position offset in innutflle2\n');pr-,ntf( ....... freqzero2 indicates type of freq zeroing and shiftin~g to do on inputfile2%.:printf(" zn. .... zero negative freqs and shift down\n");printf(' zp .... .zero positive freqs and shift up\n");printf(" zz. .... .do not zero anything, do not shift\n");printf( ....... conj2 indicates if conjugation of data from Inputfile2 -s'\n");printf(" desired before multiplication\n");printf(" y .... .yes conjugate data\n");printf(" n.... .no do not conjugate data\n");printf(" usual setup is conjl = n, conj2 = yn)printf( ....... outputfile is where the spectrum values will be placed\n");pr-,ntf( ....... Ioflag indicates datatypes of inputfilel,inputfile2 and outputfile\n");printf(" aaa ............... ascii,ascii,ascii\n");printf(" aab ............... ascii,ascii~binary\n");printf(" aba ............... ascii-,binary,ascii\n");printf(" abb ............... ascii,binary,binary\n");printf(" baa ............... ascii,ascii,ascii\n");printf(" bab ............... ascii,ascii,binary\n");printf(" bba ............... binary, binary, ascii\n");printf(" bbb ............... binary, binary, binary\n");printf( ....... Itypes indicates number types of input saxnples\n'");printfC' r ..................single real float\n");printf(" i ..................single integer\n");printf(" c ..................complex, two floats\n");print f("\n") ;printf("... .sample useage:\n');printf(" subfam 8192 datal.dat 64 zn n data2.dat 2156 zp y outputA.dat bbb rr\n");exit 0;

n=atoi(argv(1]);infilel=argv(2];offl=atoi.(argv(3 1);freqzerol=argv (41;conjl=argv[5];infile2=argvt 61;off2'=atoi (argvf7 1);freqzero2=argv[8];conj2=argv(91;outfile=argv(1O];ioflag=argv(11];itypes=argv (12];

/* verify that n is a power of 2 *i=n%2;if (i=O){printf("subfam. ..fatal error\n");printf("....calling argument n is not a power of 2\n");exito(;I

/* verify that conji & conj2 are y or n *if (((conjl(O]!='y')&&(conjl(Ofl-'n'))II((conj2(O]'-'y')&&(conj2(O1!-'n')))printf("subfam. .. .fatal error\n");printf("........ conji and conj2 must be set to y or n\n");

92

Page 100: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:23 1992 testalg/subfam.c Page 4

exit 0;

/* verify that itypes are r, i or c ~if (((itypes[OJ!='r')&&(itypes(O]!='i')&&(itypesf0fl-'c' )) I

((itypes(lI!='r')&&(itypesfl] !='i')&&(itypes(1I !='c')))printf("subfam. .. .fatal error\n");printf( ........ Itypes must be set to r, 1 or c\n');exit 0;

/* allocate space for the 1-D data arrays ~

sl= (COMPLEX*) calloc (n, sizeof (COMPLEX));if (sl==NULL)fprintf("subfam... .insufficient space to allocate sl\n");exit 0;

s2= (COMPLEX*) calloc (n, sizeof (COMPLEX));if (s2~==NULL)printf('subfam.. ..insufficient space to allocate s2\n");exit 0;

/* allocate space to read in binary data *y= (float*)malloc (1*sizeof (float));

z=it* mllcl *eo1nt)

/* INPUT *

/* open input files, get the signal samples *

switch (ioflag(O])Icase 'a' : 1* inputfilel is an ASCII file *

if (( ifpl =fopen(infilel.,"r")) == NULLprintf("subfam. .. .unable to open ascii inputfilel\n");exit 0;

/* move to the desired starting offset position in the file ~for (i-O;i<offl;i++)fswitch (itypes(O1)case 'r' : /* single real float per line ~

if (fscanf(ifpl,"%e",&tempreal) !=l)(printf("subfam. ...EOF encountered while attempting to reach offsetl\n");fclose (ifpl);exit 0;

break;case 'i': /* single integer per line ~

if (fscanf(ifpl,"%i",scaninteger) !=1)fprintf("subfam. .. .EOF encountered while attempting to reach offsetl\n");fclose (ifpl);exit 0;

break;default: /* complex, two floats per line ~

if (fscanf(ifpl*,"%e %e",&tempreal,&tempimag) '-2)jprintf("subfam. .. .EOF encountered while attempting to reach offsetl\n");

93

Page 101: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:23 1992 testalg/subfam.c Page 5

fclose(ifpl);exit (;

/* end switch itypes[0] //* end if i=O;i<offl */

/* read in n data samples *1

for (i=O;i<n;i++){switch (itypes[O]) f

case 'r' : /* single real float per line "/if (fscanf(ifpl,"%e",&sl(i].r)!=l){

printf("subfam...EOF reached while reading inputfilel\n");fclose(ifpl);exit (;

break;case 'i' : /* single integer per line */

if (fscanf(ifpl,"%i",scaninteger) !=1)printf("subfam. .. EOF reached while reading inputfilel\n");fclose (ifpl);exit 0;Isl [i] .r=scaninteger;

break;default: /* complex, two floats per line */

if (fscanf(ifpl,"%e %e",&sl[i].r,&sl[i].i)!=2){printf("subfam. .. EOF reached while reading inputfilel\n");fclose (ifpl);exit 0;

I /* end switch itypes[O] *//* end for i=O i<n */

fclose (ifpl);break;

case 'b': /* inputfilel is a BINARY file */if (( ifpl = fopen(infilel,"rb")) == NULL f

printf("subfam. .. unable to open binary inputfilel\n");exit 0;

/* move to the desired starting offset position in the file •/for (i=O;i<offl;i++){

switch (itypes(0]) Icase 'r': /* single real float per line */

if (fread(ysizeof(*y),l,ifpl)!=l){printf("subfam.. .EOF encountered while attempting to reach offsetl\n");fclose (ifpl);exit 0;

break;case 'i' : /* single integer per line */

if (fread(z,sizeof(*z),l,ifpl) !=l)printf("subfam ... EOF encountered while attempting to reach offsetl\n");fclose (ifpl);exit 0;

94

Page 102: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:23 1992 testalg/subfaxn.c Page 6

break;default: /* complex, two floats per line ,

if (freaid(Y,sizeof(*y),l,ifplfl!=l){printf("subfam .. .EOF encountered while attempting to reach offsetl\n");fclose(ifpl);exit 0;

if (freaci(y,sizeof(*y),l,ifpl)!=l){printf("subfam. ...EOF encountered while attempting to reach offsetl\n");fclose(ifpl);exit 0;

/* end switch itypes[O] */* end if i=O;i<offl *

/* read in n data samples ~for (i=O;i<n;i++)fswitch (itypest1))f

case 'r' : /* single real float per line ~if (fread(y,sizeof(*y),l,ifpl)!=l){

printf("subfam.... .EOF reached while reading inputfilel\n");fclose (ifpl);exit 0;

sli Eu.r=*y;break;

case 'i' : /* single integer per line *if (fread(z,sizeof(*z),l,ifpl)'=1)(printf("'subfam .. .EOF reached while reading inputfilel\n');f close (ifpl);exit 0;Isl~i] .r=*z;

break;default: /* complex, two floats per line ~

if (fread(y,sizeof(*y),l,ifpl)Y=l){printf("subfam. ...EOF reached while reading inputfilel\n");fclose (ifpl);exit 0;

sl~i] .r=*y;if (fread(y,sgizeof(*y),l,ifpl)'=1)fprintf("'subfam .. .EOF reached while reading inputfilel\n");f close (ifpl);exit 0;

I/* end switch itypes(OJ 1/* end for i=O i~n1

fclose (ifpl);break;

default: /* invalid format specified for inputfilel ~printf("subfam... invalid format specified for inputfilel\n");exit 0;I/* end switch ioflag(O1 ]

95

Page 103: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:23 1992 testalg/subfam.c Page 7

swit ch (i f lag [ IIcase 'a': /* inputfiie2 :s an ASCI fi"-le/

if (( ifp2 = fopen(infile2,"r')) == NULLprintf("subfam... .unable to open ascii inputflle2\n");exit 0;

/* move to the desired starting o~ffset positicn in the filefor (i=O;i<off2;i++)f

switch (itypes[1])fcase 'r' : /* single real float per line *

if (fscanf(ifp2, "%e",&ýtempreai) !=1)iprintf("subfam .. .EOF encountered while attempting to reach Offset2\n");fclose(ifp2);exit 0;

break;case 'i' : /* single integer per line/

if (fscanf(ifp2,"%i",scaninteger)'=l)fprintf("subfam....EOF encountered while attempting to reach Offset2\,n");fclose(ifp2);exit 0;

break;default: /* complex, two floats per line *

if (fscanf(ifp2,"%.Ie %e"',&tempreal,&tempimag) '=2)jprintf("subfam .. .EOF encountered while attempting to reach offset2\n');fclose (ifp2);exit 0;

I * end switch itypes~j */* end if i=O;i<off2 ~

/* read in n data samples *

for (i=O;i<n;i++){switch (itypes(l])

case 'r' : /* single real float per line ~if (fscanf(ifp2,"%erv,&s2[i1.r-)!=1){

printf("subfaxn. ...EOF reached while reading inputfile2\n");fclose(ifp2);exit 0;

break;case 'i' : /* single integer per line ~

if (fscanf(ifp2,"%i",scaninteger) !=1)fprintf("subfam. ...EOF reached while reading inputfile2\n");fclose(ifp2);exit 0;

s2 (ii.r=scaninteger;break;default: /* complex, two floats per line *

if (fscanf(ifp2,"%e %e'",&s2(iI.r,&s2(i].i)!=2){printf("subfam. ...EOF reached while reading inputfile2\n");fclose(ifp2);exit 0;

96

Page 104: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:23 1992 testalg/subfa~m.c Page 8

/* end switch itypesV2 '

/* end for i=O i<n 'fclose (ifp2);break;

case 'b': /* inputfile2 is a BINARY file ~if (( ifp2 = fopen(infile2,"rb")) == NULL)printfC'subfam.n. .unable to open binary inputfile2\nt');exit 0;

/* move to the desired starting offset position in the file 4

for (i=O;i<off2;i++)fswitch (itypes[lI)f

case 'r' : /* single real float per line 4

if (fread(readreal,sizeof(*readreal),1,ifp2)!=l)fprintf("subfam .. .EOF encountered while attempting to reach offset2\n");fclose(ifp2);exit 0;

break;case ' i' : /* single integer per line 4

if (fread(readinteger,sizeof(*readinteger),1,ifp2)'=1)fprintf("subfam .. .EOF encountered while attempting to reach offset2\n");fclose(ifp2);exit 0;Ibreak;

default: /* complex, two floats per line 4

if (fread(readreal,sizeof(*readreal),J.,ifp2)'=1)fprintf("'subfam... .EOF encountered while attempting to reach offset2\n");fclose (ifp2);exit 0;

if (fread(readimag,sizeof(*readirnag),1,ifp2) '=1)1printf("subfam .. .EOF encountered while attempting to reach offset2\n");fclose (ifp2);exit 0;

/* end switch itypesflj 4

/* end if i=O;i<off2 4

/* read in n data samples 4

for (i=O;i<n;i++)fswitch (itypestli)f

case 'r' : /* single real float per line 4

if (fread(readreal,sizeof(*readreal),l,ifp2)'=1)fprintf("subfam,.. .EOF reached while reading inputfile2\n");fclose (ifp2);exit 0;I

s2(i] .r-*readreal;break;

case 'i': /4 single integer per line 4

if (fread(readinteger,sizeof(*readinteger),l,ifp2)'=1)fprintf("subfam .. .EOF reached while reading inputfile2\n");fclose(ifp2);

97

Page 105: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

D-ec 9 12:23 1992 ?-estalg/subfam.c Page 9

exit Q

scaninteger=*readinteger;s2[il .r=scaninteger;

break;default: /* complex, two floats per line ~

if (fread(readreal,sizeof(*readreai),1,i.fD2) !=1){printf("subfam.n.. .EOF reached while reading inputfile2\n");fclose(ifp2);exit 0;

s2 [ii .r=*readreal;if (fread(readimag,sizeof(*readimag),1,ifp2)'=1)fprintf("subfam. .. .EOF reached while reading inputfile2\n');fclose (ifp2);exit 0;

s2[i] .i=*readimag;1/* end switch itypes[1] '

/* end for i=O i<n /fclose (ifp2);break;

default: /* invalid format specified for inputfile2 ~printf("subfam.. .invalid format specified for inputfile2\n");exit 0;

/* end switch ioflag[1] *

/* ZEROIZE REQUESTED FREQUENCY SIDE AND SHIFT APPROPRIATELY *

quarter n=n/4;switch (freqzerol(]))f

case 'n': /* zero negative and shift down *

direction=l; /* request a forward transform time-to-freq *norm=O;fft(sl,n,d'i.rection,norm); /* results returned in si *for (i=O; i<(n/2); i++){ /* zero lower half ~

sl~il .r=O;sl[iJ .i=O;

direction=-1; /* request an inverse transform freq-to-timenorm=-2;fft(sl,n,direction,norm); /* results returned in si l

/* downconvert */t-0.0; /* starting time *for (i=O; i<n; i++)convfac=TWOP I *INTFREQ*t;tempreal=cos (convfac);tempimag= (-1) *sin (convfac);numreal=sl~i] .r*temPreal - sl~il .i*tempimag;sl~iI.i=sl~i].r*tempirnag+slti].i~tempreal;sl(i] .r=num~real;t=t+SAMPTIME;

break;case 'p': /* zero positive and shift up ~

direction=l; /* request a forward transform time-to-freq *

Page 106: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:23 1992 testalg/subfain.c Page 10

norm=0;fft(sl,n,direction,norm); /* results returned in si lfor (1=(n/2); i<n; i++){ /* zero upper half '

sl[ij .r=0;31[i]1.1=0;

direction=-!; /* request an inverse transform freq-to-time 'norm=2;fft(sl,n,direction,norm); /* results returned in si '

/* upconvert */t=0.0; /* starting time *for (i=0; i~n; i++)I

convfac=TWOPI*INTFREQ*t;tempreal=cos (convfac);ternpimag=sin (convfac);numreal=sl~iJ.r*tempreal - sl[i] .i*tempimag;sl~ii.i=slfi].r*tempimag+sl[i].i*tempreal;sl[i] .r=numreal;t=t+SAMPTIME;

break;case 'z: /* do nothing *

break;default: /* invalid format specified for freqzerol *

printf("subfam... .invalid format specified for freqzerol\n");exit 0;/* end switch *

switch (freqzero2[1])Icase 'n': /* zero negative and shift down *

direction=l; /* request a forward transform time-to-freq *norm=O;fft(s2,n,direction,norm); /* results returned in s2 ~for (i=O; i<(n/2); il-+){ /* zero lower half '

s2[i) .r=O;s2[i] .i=O;

direction=-l; /* request an inverse transform freq-to-time *norm=2;fft(s2,n,direction,norm); /* results returned in s2 ~

/* downconvert */t=0.0; /* starting time *for (i=0; i<n; i++)convfac=TWOPI*INTFREQ*t;tempreal=cos (convfac);tempimag=(-1) *sin (convfac);numreal=s2 (iJ .r*tempreal - s2 [ii .i*tempimag;s2[i] .i=s2(i] .r*tempimag+s2[i] .i*tempreal;s2(il .r=nuxrreal;t=t+SAMPTIME;

break;case 'p': /* zero positive and shift up ~direction=1; /* request a forward transform tirne-to-freq *norm-O;fft(s2,n,direction,,norm); /* results returned in s2 *for (i-(n/2); i<n; i++)f 1* zero upper half *

99

Page 107: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

e c 9 12:Z3 1992 z-estaiq/subfa~m.c ?age 1

s2[E:2.r=Q;

direction=-1; request an in.verse transform freo-tc ime '

norm=2;fft (s2, n, direction, norm); '* results returned In s-'

/~upconvert/

t=0.0; /~startina timefor (.i=O; i<n; i++)J

convfac=TWOP I *INTFR.EQ~t;tempreal=cos (convfac);tempimag=sin (convfac);numreal=s2[i] .r~tempreal - s2[l].i~tempimag;s2[i] .i=s2[i] .r~tem~imag+s2[il .i*tempreal;s2[i] .r=numreal;t=t+SAMPTIME;

break;case 'z': /* do nothing 4

break;default: /* invalid format specified for freqzero2 ~printf("subfamn.. .invalid format specified for freqzero2\n");exit 0;/4 end switch 4

/* MULTIPLICATION 4

/* create space for the output array 4

s3= (COMPLEX*) calloc (n, sizeof (COMPLEX));if (s3==NULL)printf("subfam.. .insufficient space to allocate s3\n");exit 0;

if ((conjl[O]=='y')&&(conj2ý[OJ=='y')) { /* multiply conjugate si times conjugate s2 4

for (i=O;i<n;i++)(

.if ((conjl[O]=='y')&&(conj2[O)=='n')) ( /* multiply conjugate s1 times s2 ~for (i=O;i<n;i++)i

if ((conjl[O]='n')&&(conj2(OJ=='y')) f /4 multiply si times conjugate s2 'for (i=O;i<n;i++)f

if ((conjl[O]=='n')&&(conj2(O]=='n')) { /* multiply sl times s2 4

for (i=O;j~n;i++)(

100

Page 108: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

Dec 9 12:23 1992 testalg/subfam.c Page 12

/* take an FFT of n-point s3 *

/* set values in arguments sent to fft /

direction=l; /* request a forward transform time-to-freq *

norm.=O;~ffis3n~drecionnor); /* results returned in s3

/* OUTPUT *

/* take magnitude and phase of s3 and place in the output file ~

switch (ioflag(21)case 'a': /* outputfile is an ascii file *

if (( ofp = fopen(outfile,"w"t )) == NULL)printf('subfam. ...unable to open ascii outputfile\n");exit 0;

/* write out data to the ascii filefor (i=O;i<n;i++)ioutputmag=sqrt ((s3[(ij .r*s3 (i].r) +(s3[(i].i*s3 (i].i))outputphase=atan(s3[iJ.i/s3(i] .r);fprintf(ofp, "9-16.6e %-16.6e\n",outputmag,outputphase);

/* close the output file ~fclose (ofp);break;

case 'b' : 1* outputfile is a binary file ~if (( ofp = fopen(outfile,"wb")) == NULL)printf("subfam. ...unable to open binary outputfile\n");exit 0;

/* write out data to the binary filefor (i=O;i<n;i++)f

outputmag=sqrt ((s3 (i] .r*s3 [iJr) +(s3 (i I.i*s3 (iJ i))outputphase=atan(s3[i] .i/s3(i] .r);* y=outputmag;

if (fwrite(y,sizeof(*y),l,ofp)'=l)fprintf("'subfam... .error while writing outputfile\n");f close (ofp);exit 0;

*y~outputphase;if (fwrite(y,sizeof(*y),l,ofp)fl=){printf("subfam...error while writing outputfile\n");fclose (ofp);exit 0,

}/* end if i=O ...fclose (ofp);break;

default: /* invalid format specified for outputfile ~printf("subfam... invalid format specified for outputfile\n");exit 0;

/* end switch ioflag(2] 1

101

Page 109: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

9ec '-Z:23 1992 ýetirsba~ P age 1

102

Page 110: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

LIST OF ABBREVIATIONS

BPSK binary phase shift keyingFAM FFT accumulation methodFFT fast fourier transformFSM frequency smoothing methodPAM pulse amplitude modulationQAM quadrature amplitude modulationQPSK quadrature phase shift keyingSCF spectral correlation functionSSCA strip spectral correlation algorithmSSPI Statistical Signal Processing, Inc.SUBFAM sub-FFT accumulation method

103

Page 111: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

LIST OF REFERENCES

1. Gardner, W.A., Statistical Spectral Analysis, PrenticeHall, 1988.

2. Gardner, W.A., "Exploitation of Spectral Redundancy InCyclostationary Signals," IEEE Signal ProcessingMagazine, April 1991.

3. National Security Agency, Spread Spectrum Signals andTechniques Handbook, Third Edition, Radian Corporation,1981.

4. Schell, S.V., and Spooner, C.M., Cyclic Spectral AnalysisSoftware Package, Version 2.0, Statistical SignalProcessing, Inc., Yountville CA, 1991.

5. Roberts, R.S., Brown, W.A. and Loomis, H.H.,"Computationally Efficient Algorithms for Cyclic SpectralAnalysis," IEEE Signal Processing Magazine, April 1991.

6. PRO-MATLAB' for Sun Workstations, The MathWorks, Inc.,Natick MA, January 31, 1990.

7. Loomis, H.H., Notes for an algorithm to compute cyclefrequencies for a single spectral frequency in the alpha-frequency plane, Naval Postgraduate School, 1991(unpublished).

8. Strum, R.D., and Kirk, D.E., First Principles ofDiscrete Systems and Digital Signal Processing,Addison-Wesley, 1988.

9. Brown, R.A. III, and Loomis, H.H. Jr., "DigitalImplementations of Spectral Correlation Analyzers," IEEESignal Processing Magazine, (to be published).

10. Roberts, R.S., and Loomis, H.H. Jr., "Parallel ComputationStructures for a Class of Cyclic Spectral AnalysisAlgorithms," IEEE Signal Processing Magazine, February 3,1992.

11. Hecht-Nielsen, R., Neurocomputing, Addison-Wesley, 1990.

12. Schalkoff, R.J., Digital Image Processing and ComputerVision, John Wiley & Sons, Inc., 1989.

104

Page 112: DTICFIELD GROUP [ SUB-GROUP I Icyclic spectral analysis, cyclostationary, cyclic spectrum, strip spectral correlation algorithm, fast fourier transform accumulation method 19. ABSTRACT

INITIAL DISTRIBUTION LIST

No. Copies

1. Defense Technical Information Center 2Cameron StationAlexandria, VA 22304-6145

2. Library, Code 52 2Naval Postgraduate SchoolMonterey, CA 93943-5002

3. Chairman, Code EC 1Department of Electrical and Computer EngineeringNaval Postgraduate SchoolMonterey, CA 93943-5000

4. Prof. H.H. Loomis Jr., Code EC/Lm IDepartment of Electrical and Computer EngineeringNaval Postgraduate SchoolMonterey, CA 93943-5000

5. R.F. Bernstein Jr., Code EC/Be 1Department of Electrical and Computer EngineeringNaval Postgraduate SchoolMonterey, CA 93943-5000

6. LCDR Nancy J. Carter, USN INaval Security Group Support Activity3801 Nebraska Ave. N.W.Washington, DC 20393-5220

7. NRL IAttn: LCDR Oxborough, Code 91104555 Overlook Ave., S.W.Washington, DC 20375-5000

8. SSPI 1Attn: Dr. W.A. Gardner6950 Yount St.Yountville, CA 94599

9. Signal Science, Inc. 1Attn: Ms. Carolyn Koenig2985 Kifer Rd.Santa Clara, CA 95051

105