File: README.md

package info (click to toggle)
liquid-dsp 1.7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 9,216 kB
  • sloc: ansic: 115,859; sh: 3,513; makefile: 1,350; python: 274; asm: 11
file content (647 lines) | stat: -rw-r--r-- 26,880 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647

liquid-dsp examples
===================

This directory contains all the examples for interfacing the liquid modules.

 * `agc_crcf_example.c`:
    Automatic gain control example demonstrating its transient response.

 * `agc_crcf_qpsk_example.c`:
    Automatic gain control test for data signals with fluctuating signal
    levels.  QPSK modulation introduces periodic random zero-crossings which
    gives instantaneous amplitude levels near zero.  This example tests the
    response of the AGC to these types of signals.

 * `ampmodem_example.c`:
    Tests simple modulation/demodulation of the ampmodem (analog amplitude
    modulator/demodulator) with noise, carrier phase, and carrier frequency
    offsets.

 * `asgramcf_example.c`:
    ASCII spectrogram example for complex inputs. This example demonstrates
    the functionality of the ASCII spectrogram. A sweeping complex sinusoid
    is generated and the resulting spectral periodogram is printed to the
    screen.

 * `asgramf_example.c`:
    ASCII spectrogram example for real-valued input. This example demonstrates
    the functionality of the ASCII spectrogram for real-valued input siganls.
    A cosine signal with time-varying frequency is generated and the resulting
    spectral periodogram is printed to the screen. Because the time signal has
    no complex component, its spectrum is symmetric.

 * `autocorr_cccf_example.c`:
    This example demonstrates the autocorr (auto-correlation) object
    functionality.  A random time-domain sequence is generated which exhibits
    time-domain repetitions (auto-correlation properties), for example:
    abcdabcdabcd....abcd.  The sequence is pushed through the autocorr object,
    and the results are written to an output file. The command-line arguments
    allow the user to experiment with the sequence length, number of sequence
    repetitions, and properties of the auto-correlator, as well as signal-to-
    noise ratio.

 * `bpacketsync_example.c`:

 * `bpresync_example.c`:
    This example demonstrates the binary pre-demodulator synchronizer. A random
    binary sequence is generated, modulated with BPSK, and then interpolated.
    The resulting sequence is used to generate a bpresync object which in turn
    is used to detect a signal in the presence of carrier frequency and timing
    offsets and additive white Gauss noise.

 * `bsequence_example.c`:
    This example demonstrates the interface to the bsequence (binary sequence)
    object.  The bsequence object acts like a buffer of bits which are stored
    and manipulated efficiently in memory.

 * `bufferf_example.c`:

 * `cgsolve_example.c`:
    Solve linear system of equations `Ax = b` using the conjugate-
    gradient method where A is a symmetric positive-definite matrix.
    Compare speed to matrixf_linsolve() for same system.

 * `chromosome_example.c`:

 * `compand_cf_example.c`:

 * `compand_example.c`:
    This example demonstrates the interface to the compand function
    (compression, expansion).  The compander is typically used with the
    quantizer to increase the dynamic range of the converter, particularly for
    low-level signals.  The transfer function is computed (empirically) and
    printed to the screen.

 * `complementary_codes_example.c`:
    This example demonstrates how to generate complementary binary codes
    in liquid.  A pair of codes is generated using the bsequence
    interface, their auto-correlations are computed, and the result is
    summed and printed to the screen.  The results are also printed to
    an output file, which plots the sequences and their
    auto-correlations.

    SEE ALSO: `bsequence_example.c`
              `msequence_example.c`

 * `cpfskmodem_example.c`:

 * `conversion_example.c`:
    
    This example demonstrates conversion from complex baseband to a real-valued
    signal, and then down-conversion back to complex baseband while removing the
    negative image.
    
     STEP 1: A signal is generated at complex baseband consisting of narrow-band
             filtered noise and an offset tone (to show asymmetry in the transmit
             spectrum).
    
     STEP 2: The signal is mixed up to a carrier 'fc' (relative to the sampling
             frequency) and the real-component of the result is retained. This is
             the DAC output. The spectrum of this signal has two images: one at
             +fc, the other at -fc.
    
     STEP 3: The DAC output is mixed back down to complex baseband and the lower
             image is (mostly) filtered off. Reminants of the lower frequency
             component are still visible due to the wide-band and low-order
             filter on the receiver. The received complex baseband signal also
             has a reduction in power by 2 because half the signal's energy (the
             negative image) is filtered off.
    
 * `crc_example.c`:
    Cyclic redundancy check (CRC) example.  This example demonstrates how a
    CRC can be used to validate data received through un-reliable means (e.g.
    a noisy channel).  A CRC is, in essence, a strong algebraic error
    detection code that computes a key on a block of data using base-2
    polynomials.  Also available is a checksum for data validation.

    SEE ALSO: `fec_example.c`

 * `cvsd_example.c`:
    Continuously-variable slope delta example, sinusoidal input. This example
    demonstrates the CVSD audio encoder interface, and its response to a
    sinusoidal input.  The output distortion ratio is computed, and the
    time-domain results are written to a file.

 * `dds_cccf_example.c`:
    Direct digital synthesizer example.  This example demonstrates
    the interface to the direct digital synthesizer.  A baseband
    pulse is generated and then efficiently up-converted
    (interpolated and mixed up) using the DDS object.  The resulting
    signal is then down-converted (mixed down and decimated) using
    the same DDS object.  Results are written to a file.

 * `dotprod_cccf_example.c`:
    This example demonstrates the interface to the complex
    floating-point dot product object (dotprod_cccf).

 * `dotprod_rrrf_example.c`:
    This example demonstrates the interface to the floating-point dot
    product object (dotprod_rrrf).

 * `eqlms_cccf_blind_example.c`:
    This example tests the least mean-squares (LMS) equalizer (EQ) on a
    signal with an unknown modulation and carrier frequency offset. That
    is, the equalization is done completely blind of the modulation
    scheme or its underlying data set. The error estimate assumes a
    constant modulus linear modulation scheme. This works surprisingly
    well even more amplitude-modulated signals, e.g. 'qam16'.

 * `eqlms_cccf_block_example.c`:
    This example tests the least mean-squares (LMS) equalizer (EQ) on a
    signal with an unknown modulation and carrier frequency offset.
    Equalization is performed blind on a block of samples and the reulting
    constellation is output to a file for plotting.

 * `eqlms_cccf_decisiondirected_example.c`:
    Tests least mean-squares (LMS) equalizer (EQ) on a signal with a known
    linear modulation scheme, but unknown data. The equalizer is updated
    using decision-directed demodulator output samples.

 * `eqlms_cccf_example.c`:
 * `eqrls_cccf_example.c`:

 * `error_handling_example.c`:
    This example demonstrates error handling in liquid.

 * `fct_example.c`:

 * `fec_example.c`:
    This example demonstrates the interface for forward error-correction (FEC)
    codes.  A buffer of data bytes is encoded and corrupted with several
    errors.  The decoder then attempts to recover the original data set.  The
    user may select the FEC scheme from the command-line interface.

    SEE ALSO: `crc_example.c`
              `checksum_example.c`
              `packetizer_example.c`

 * `fec_soft_example.c`:
    This example demonstrates the interface for forward error-correction
    (FEC) codes with soft-decision decoding.  A buffer of data bytes is
    encoded before the data are corrupted with at least one error and
    noise. The decoder then attempts to recover the original data set
    from the soft input bits.  The user may select the FEC scheme from
    the command-line interface.

    SEE ALSO: `fec_example.c`
              `packetizer_soft_example.c`

 * `fft_example.c`:
    This example demonstrates the interface to the fast discrete Fourier
    transform (FFT).

    SEE ALSO: `mdct_example.c`
              `fct_example.c`

  * `fftfilt_crcf_example.c`

    Complex FFT-based finite impulse response filter example. This example
    demonstrates the functionality of firfilt by designing a low-order 
    prototype and using it to filter a noisy signal.  The filter coefficients
    are  real, but the input and output arrays are complex. The filter order
    and cutoff frequency are specified at the beginning, and the result is
    compared to the regular corresponding firfilt_crcf output.

    SEE ALSO: `firfilt_crcf_example.c`

 * `firdecim_crcf_example.c`:
    This example demonstrates the interface to the firdecim (finite
    impulse response decimator) family of objects.
    Data symbols are generated and then interpolated according to a
    finite impulse response square-root Nyquist filter.  The resulting
    sequence is then decimated with the same filter, matched to the
    interpolator.

    SEE ALSO: `firinterp_crcf_example.c`

 * `firdes_kaiser_example.c`:
    This example demonstrates finite impulse response filter design using a
    Kaiser window.
    
    SEE ALSO: `firdespm_example.c`

 * `firdespm_example.c`:
    This example demonstrates finite impulse response filter design using the
    Parks-McClellan algorithm.

    SEE ALSO: `firdes_kaiser_example.c`

 * `firfarrow_rrrf_sine_example.c`:

 * `firfilt_rrrf_example.c`:

 * `firfilt_cccf_example.c`:
    This example demonstrates the finite impulse response (FIR) filter
    with complex coefficients as a cross-correlator between transmitted
    and received sequences.

 * `firfilt_crcf_example.c`:
    Complex finite impulse response filter example. Demonstrates the 
    functionality of firfilt by designing a low-order prototype and using it 
    to filter a noisy signal.  The filter coefficients are real, but the 
    input and output arrays are complex. The filter order and cutoff 
    frequency are specified at the beginning.

 * `firhilb_decim_example.c`:
    Hilbert transform: 2:1 real-to-complex decimator.  This example
    demonstrates the functionality of firhilb (finite impulse response Hilbert
    transform) decimator which converts a real time series into a complex one
    with half the number of samples.  The input is a real-valued sinusoid of N
    samples. The output is a complex-valued sinusoid of N/2 samples.

    SEE ALSO: `firhilb_interp_example.c`

 * `firhilb_example.c`:

 * `firhilb_interp_example.c`:
    Hilbert transform: 1:2 complex-to-real interpolator.  This example
    demonstrates the functionality of firhilb (finite impulse response Hilbert
    transform) interpolator which converts a complex time series into a real
    one with twice the number of samples.  The input is a complex-valued
    sinusoid of N samples. The output is a real-valued sinusoid of 2*N
    samples.

    SEE ALSO: `firhilb_decim_example.c`

 * `firpfbch2_crcf_example.c`:
    Example of the finite impulse response (FIR) polyphase filterbank
    (PFB) channelizer with an output rate of 2 Fs / M as an (almost)
    perfect reconstructive system.

 * `firinterp_crcf_example.c`:
    This example demonstrates the interp object (interpolator)
    interface. Data symbols are generated and then interpolated
    according to a finite impulse response Nyquist filter.

 * `firpfbch_crcf_analysis_example.c`:
    Example of the analysis channelizer filterbank. The input signal is
    comprised of several signals spanning different frequency bands. The
    channelizer downconverts each to baseband (maximally decimated), and
    the resulting spectrum of each is plotted.

 * `firpfbch_crcf_example.c`:
    Finite impulse response (FIR) polyphase filter bank (PFB)
    channelizer example.  This example demonstrates the functionality of
    the polyphase filter bank channelizer and how its output is
    mathematically equivalent to a series of parallel down-converters
    (mixers/decimators). Both the synthesis and analysis filter banks
    are presented.

 * `firpfbch_crcf_synthesis_example.c`:
    Example of the synthesis channelizer filterbank.  Random symbols are
    generated and loaded into the bins of the channelizer and the
    time-domain signal is synthesized.  Subcarriers around the band
    edges are disabled as well as those near 0.25 to demonstrate the
    synthesizer's ability to efficiently notch the spectrum. The results
    are printed to a file for plotting.

 * `flexframesync_example.c`:
    This example demonstrates the basic interface to the flexframegen and
    flexframesync objects used to completely encapsulate raw data bytes
    into frame samples (nearly) ready for over-the-air transmission. A
    14-byte header and variable length payload are encoded into baseband
    symbols using the flexframegen object.  The resulting symbols are
    interpolated using a root-Nyquist filter and the resulting samples are
    then fed into the flexframesync object which attempts to decode the
    frame. Whenever frame is found and properly decoded, its callback
    function is invoked.

 * `flexframesync_reconfig_example.c`:
    Demonstrates the reconfigurability of the flexframegen and
    flexframesync objects.

 * `framesync64_example.c`:
    This example demonstrates the interfaces to the framegen64 and
    framesync64 objects used to completely encapsulate data for
    over-the-air transmission.  A 24-byte header and 64-byte payload are
    encoded, modulated, and interpolated using the framegen64 object.
    The resulting complex baseband samples are corrupted with noise and
    moderate carrier frequency and phase offsets before the framesync64
    object attempts to decode the frame.  The resulting data are
    compared to the original to validate correctness.

    SEE ALSO: `flexframesync_example.c`

 * `freqmodem_example.c`:

 * `fskmodem_example.c`:
    This example demonstrates the M-ary frequency-shift keying
    (MFSK) modem in liquid. A message signal is modulated and the
    resulting signal is recovered using a demodulator object.

 * `gasearch_example.c`:

 * `gasearch_knapsack_example.c`:

 * `gmskmodem_example.c`:

 * `gradsearch_example.c`:

 * `gradsearch_datafit_example.c`:
    Fit 3-parameter curve to sampled data set in the minimum
    mean-squared error sense.

 * `iirdes_analog_example.c`:
    Tests infinite impulse response (IIR) analog filter design. While this
    example seems purely academic as IIR filters used in liquid are all
    digital, it is important to realize that they are all derived from their
    analog counterparts. This example serves to check the response of the
    analog filters to ensure they are correct.  The results of design are
    written to a file.

    SEE ALSO: `iirdes_example.c`
              `iirfilt_crcf_example.c`

 * `iirdes_example.c`:
    Tests infinite impulse response (IIR) digital filter design.

    SEE ALSO: `iirdes_analog_example.c`
              `iirfilt_crcf_example.c`

 * `iirdes_pll_example.c`:
    This example demonstrates 2nd-order IIR phase-locked loop filter
    design with a practical simulation.

    SEE ALSO: `nco_pll_example.c`
              `nco_pll_modem_example.c`

 * `iirfilt_cccf_example.c`:
    Complex infinite impulse response filter example. Demonstrates the
    functionality of iirfilt with complex coefficients by designing a
    filter with specified parameters and then filters noise.

 * `iirfilt_crcf_example.c`:
    Complex infinite impulse response filter example. Demonstrates the
    functionality of iirfilt by designing a low-order prototype (e.g.
    Butterworth) and using it to filter a noisy signal.  The filter
    coefficients are real, but the input and output arrays are complex.  The
    filter order and cutoff frequency are specified at the beginning.

 * `iirinterp_crcf_example.c`:
    This example demonstrates the iirinterp object (IIR interpolator)
    interface.

 * `interleaver_example.c`:
    This example demonstrates the functionality of the liquid interleaver
    object.  Interleavers serve to distribute  grouped bit errors evenly
    throughout a block of data. This aids certain forward error-correction
    codes in correcting bit errors.  In this example, data bits are
    interleaved and de-interleaved; the resulting sequence is validated to
    match the original.

    SEE ALSO: `packetizer_example.c`

 * `interleaver_scatterplot_example.c`:

 * `interleaver_soft_example.c`:

 * `kbd_window_example.c`:

 * `lpc_example.c`:
    This example demonstrates linear prediction in liquid. An input signal
    is generated which exhibits a strong temporal correlation. The linear
    predictor generates an approximating all-pole filter which minimizes
    the squared error between the prediction and the actual output.

 * `matched_filter_example.c`:

 * `math_lngamma_example.c`:
    Demonstrates accuracy of lngamma function.

 * `mdct_example.c`:

 * `modem_arb_example.c`:
    This example demonstrates the functionality of the arbitrary modem, a
    digital modulator/demodulator object with signal constellation points
    chosen arbitrarily.  A simple bit-error rate simulation is then run to
    test the performance of the modem.  The results are written to a file.

    SEE ALSO: `modem_example.c`

 * `modem_example.c`:
    This example demonstrates the digital modulator/demodulator (modem) object.
    Data symbols are modulated into complex samples which are then demodulated
    without noise or phase offsets.  The user may select the modulation scheme
    via the command-line interface.

    SEE ALSO: `modem_arb_example.c`

 * `modem_soft_example.c`:
    This example demonstrates soft demodulation of linear
    modulation schemes.

 * `modular_arithmetic_example.c`:
    This example demonstrates some modular arithmetic functions.

 * `msequence_example.c`:
    This example demonstrates the auto-correlation properties of a
    maximal-length sequence (m-sequence).  An m-sequence of a certain length
    is used to generate two binary sequences (buffers) which are then
    cross-correlated.  The resulting correlation produces -1 for all values
    except at index zero, where the sequences align.

    SEE ALSO: `bsequence_example.c`

 * `msourcecf_example.c`:
    This example demonstrates generating multiple signal sources simultaneously
    for testing using the msource (multi-source) family of objects.

 * `msresamp_crcf_example.c`:
    Demonstration of the multi-stage arbitrary resampler.

 * `msresamp2_crcf_example.c`:
    Demonstration of the multi-stage half-band resampler.

 * `nco_example.c`:
    This example demonstrates the most basic functionality of the
    numerically-controlled oscillator (NCO) object.

    SEE ALSO: `nco_pll_example.c`
              `nco_pll_modem_example.c`

 * `nco_pll_example.c`:
    This example demonstrates how the use the nco/pll object
    (numerically-controlled oscillator with phase-locked loop) interface for
    tracking to a complex sinusoid.  The loop bandwidth, phase offset, and
    other parameter can be specified via the command-line interface.

    SEE ALSO: `nco_example.c`
              `nco_pll_modem_example.c`

 * `nco_pll_modem_example.c`:
    This example demonstrates how the nco/pll object (numerically-controlled
    oscillator with phase-locked loop) can be used for carrier frequency
    recovery in digital modems.  The modem type, SNR, and other parameters are
    specified via the command-line interface.

    SEE ALSO: `nco_example.c`
              `nco_pll_example.c`

 * `nyquist_filter_example.c`:
 * `ofdmflexframesync_example.c`:
 * `ofdmframegen_example.c`:
 * `ofdmframesync_example.c`:

 * `packetizer_example.c`:
    Demonstrates the functionality of the packetizer object.  Data are encoded
    using two forward error-correction schemes (an inner and outer code)
    before data errors are introduced.  The decoder then tries to recover the
    original data message.

    SEE ALSO: `fec_example.c`
              `crc_example.c`

 * `packetizer_soft_example.c`:
    This example demonstrates the functionality of the packetizer object
    for soft-decision decoding.  Data are encoded using two forward error-
    correction schemes (an inner and outer code) before noise and data
    errors are added. The decoder then tries to recover the original data
    message. Only the outer code uses soft-decision decoding.

    SEE ALSO: `fec_soft_example.c`
              `packetizer_example.c`

 * `pll_example.c`:
    Demonstrates a basic phase-locked loop to track the phase of a
    complex sinusoid.

 * `poly_findroots_example.c`:

 * `polyfit_example.c`:
    Test polynomial fit to sample data.

    SEE ALSO: `polyfit_lagrange_example.c`

 * `polyfit_lagrange_example.c`:
    Test exact polynomial fit to sample data using Lagrange interpolating
    polynomials.

    SEE ALSO: `polyfit_example.c`

 * `qdetector_cccf_example.c`:
    This example demonstrates the functionality of the qdetector object
    to detect an arbitrary signal in time in the presence of noise,
    carrier frequency/phase offsets, and fractional-sample timing
    offsets.

 * `qpacketmodem_example.c`:
    This example demonstrates the basic packet modem encoder/decoder
    operation. A packet of data is encoded and modulated into symbols,
    channel noise is added, and the resulting packet is demodulated
    and decoded.

 * `qnsearch_example.c`:

 * `quantize_example.c`:

 * `random_histogram_example.c`:
    This example tests the random number generators for different
    distributions.

 * `repack_bytes_example.c`:
    This example demonstrates the repack_bytes() interface by packing a
    sequence of three 3-bit symbols into five 2-bit symbols.  The
    results are printed to the screen.  Because the total number of bits
    in the input is 9 and not evenly divisible by 2, the last of the 5
    output symbols has a zero explicitly padded to the end.

  * `resamp2_cccf_example.c`
    This example demonstrates the halfband resampler cenetered at the
    quarter sample rate to split the signal into positive and negative
    frequency bands. Two distinct narrow-band signals are generated; one
    at a positive frequency and one at a negative frequency. The resamp2
    object is run as a filter to separate the two about the zero-
    frequency center point.

 * `resamp2_crcf_example.c`:
    This example demonstrates the halfband resampler running as both an
    interpolator and a decimator. A narrow-band signal is first
    interpolated by a factor of 2, and then decimated. The resulting RMS
     error between the final signal and original is computed and printed
    to the screen.

 * `resamp2_crcf_decim_example.c`:
    Halfband decimator.  This example demonstrates the interface to the
    decimating halfband resampler.  A low-frequency input sinusoid is
    generated and fed into the decimator two samples at a time, producing one
    output at each iteration.  The results are written to an output file.

    SEE ALSO: `resamp2_crcf_interp_example.c`
              `decim_rrrf_example.c`

 * `resamp2_crcf_filter_example.c`:
    Halfband (two-channel) filterbank example. This example demonstrates
    the analyzer/synthesizer execute() methods for the resamp2_xxxt
    family of objects.

    NOTE: The filterbank is not a perfect reconstruction filter; a
          significant amount of distortion occurs in the transition band
          of the half-band filters.

 * `resamp2_crcf_interp_example.c`:
    Halfband interpolator.  This example demonstrates the interface to the
    interpolating halfband resampler.  A low-frequency input sinusoid is
    generated and fed into the interpolator one sample at a time, producing
    two outputs at each iteration.  The results are written to an output file.

    SEE ALSO: `resamp2_crcf_decim_example.c`
              `interp_crcf_example.c`

 * `resamp_crcf_example.c`:

 * `scramble_example.c`:
    Data-scrambling example.  Physical layer synchronization of received
    waveforms relies on independent and identically distributed underlying
    data symbols.  If the message sequence, however, is '00000....' and the
    modulation scheme is BPSK, the synchronizer probably won't be able to
    recover the symbol timing.  It is imperative to increase the entropy of
    the data for this to happen.  The data scrambler routine attempts to
    'whiten' the data sequence with a bit mask in order to achieve maximum
    entropy.  This example demonstrates the interface.

 * `smatrix_example.c`:

 * `spgramcf_example.c`:
   Spectral periodogram example with complex inputs.

 * `spgramf_example.c`:
   Spectral periodogram example with real inputs.

 * `symsync_crcf_example.c`:
    This example demonstrates the basic principles of the symbol timing
    recovery family of objects, specifically symsync_crcf. A set of random
    QPSK symbols are generated and interpolated with a timing offset. The
    resulting signal is run through the symsync_crcf object which applies a
    matched filter and recovers timing producing a clean constellation.

 * `symsync_crcf_full_example.c`:
    This example extends that of `symsync_crcf_example.c` by including options
    for simulating a timing rate offset in addition to just a timing phase
    error. The resulting output file shows not just the constellation but the
    time domain sequence as well as the timing phase estimate over time.

 * `symsync_crcf_kaiser_example.c`:
    This is a simplified example of the symync family of objects to show how
    symbol timing can be recovered after the matched filter output.

  * `symtrack_cccf_example.c`:
    
    This example demonstrates how to recover data symbols using the symtrack
    object. A stream of modulated and interpolated symbols are generated using
    the symstream object. The resulting samples are passed through a channel
    to add various impairments. The symtrack object recovers timing, carrier,
    and other information imparted by the channel and returns data symbols
    ready for demodulation.

 * `wdelayf_example.c`:

 * `windowf_example.c`:
    This example demonstrates the functionality of a window buffer (also
    known as a circular or ring buffer) of floating-point values.
    Values are written to and read from the buffer using several
    different methods.

    SEE ALSO: `bufferf_example.c`
              `wdelayf_example.c`