dc.title: "OA-OBBQ Test Case Set: Overlap-Add Block-Based One-Bit Quantization for Linear-Phase FIR Filters" dc.creator:
testCases.py holds a single Python list, lCases. Each entry is a dictionary
that fully specifies one test scenario. Running the generator over this list
produces one signal batch per entry; every batch contains sBatchSize
independent realizations of the same scenario, differing only in the random
draw of tone phases and frequency bins.
A scenario has four parts:
mWX, normalized to the drive level sBoundmWD, length sL and the
Kaiser design parametersmR; independent of the shaping filtersM — the number of bits optimized jointly| Variable | Type | Meaning |
|---|---|---|
strSig |
str | Signal type. "real" denotes a real-valued multitone signal. |
mWX |
ndarray, n×2 | Signal band(s). One row per band, [omega_lo, omega_hi] in radians per sample, range 0 to pi. |
vAmp |
ndarray or None | Amplitude per tone. None draws them randomly. |
vPhase |
ndarray or None | Phase per tone in radians. None draws uniformly from 0 to 2 pi. |
bUseCos |
bool | Excitation function. True = cosine, False = sine. |
sKRatio |
int | Spacing of the occupied frequency bins within the band. 1 occupies every bin. |
strKMode |
str | Distribution of the bins. "lin" spaces them linearly across the band. |
bReplace |
bool | Whether bins are drawn with replacement. |
sBatchSize |
int | Number of independent realizations generated per case. |
sN |
int | Signal length in samples. Must be an integer multiple of sM. |
sM |
int | Block size, i.e. the number of bits optimized jointly per block. The number of blocks is sN / sM. |
sL |
int | Length of the shaping FIR filter in taps. |
sBeta |
float | Kaiser window beta of the shaping filter. 0.0 lets the design derive it from sAsb. |
mWD |
ndarray, n×2 | Passband(s) of the shaping filter, same format as mWX. |
mR |
ndarray, n×2 | Passband(s) of the reconstruction filter, same format as mWX. Independent of mWD. |
sBound |
float | Drive level. The signal is normalized to the range [-sBound, +sBound]. |
kaiser |
dict | Filter design parameters, see below. |
The kaiser entry holds three fields:
| Field | Type | Meaning |
|---|---|---|
sApb |
float | Maximum passband ripple in dB. |
sAsb |
float | Minimum stopband attenuation in dB. |
sDeltaW |
float | Transition width in radians per sample. |
All frequencies are normalized angular frequencies in radians per sample; pi corresponds to half the sampling rate.
The list is ordered into eight groups. Within each group exactly one design axis is varied and all other parameters stay at the baseline value.
| Group | Varied axis | Values |
|---|---|---|
| baseline | — | sM = 32, sL = 79, band 0 to pi/10, 90 dB stopband |
| A | block size | sM = 8, 16, 32, 64 at sL = 79 |
| B | filter length | sL = 127, 213, 341 at sM = 32, transition width scaled accordingly |
| C | band position and width | cutoff pi/4, cutoff pi/32, bandpass pi/8 to pi/4 |
| D | stopband attenuation | 40 dB and 120 dB against the 90 dB baseline |
| E | signal band vs. shaping band | signal narrower (pi/40), wider (pi/6) and offset (pi/12 to pi/10) at a fixed shaping band of pi/10 |
| F | multiband shaping | two disjoint shaping bands, 0 to pi/16 and pi/4 to pi/3 |
| G | reconstruction mismatch | mR wider (pi/8) and narrower (pi/14) than mWD |
| H | transition width, drive, phase | transition pi/6, sBound = 0.5, sine excitation |
Note that mWD and mR are independent parameters. They coincide in most
cases, but group G deliberately sets them apart: the quantizer minimizes the
error weighted by the shaping filter, while the evaluation weights it by the
reconstruction filter, and the two measures coincide only when the filters are
identical.
Shared under CC BY 4.0.