---
dc.title: "OA-OBBQ Test Case Set: Overlap-Add Block-Based One-Bit Quantization for Linear-Phase FIR Filters"
dc.creator:
  - "Mayer, Florian"
dc.contributor:
  - "Vogel, Christian"
dc.subject:
  - "one-bit quantization"
  - "block-based optimization"
  - "noise shaping"
  - "linear-phase FIR filter"
  - "minimum-phase FIR filter"
  - "overlap-add"
  - "mixed-integer quadratic programming"
dc.description: >
  Parameter set defining the synthetic test cases used to evaluate the
  overlap-add extension of the block-based one-bit quantization framework
  (OA-OBBQ) for linear-phase FIR shaping filters. Each case fully specifies one
  test scenario: the multitone input signal, the noise-shaping filter, the
  reconstruction filter and the block size. The cases are grouped so that each
  group varies a single design axis while all remaining parameters are held
  fixed.
dc.publisher: "FH JOANNEUM - University of Applied Sciences, Graz, Austria"
dc.date: "2026-08-24"
dc.type: "Dataset"
dc.format: "text/x-python"
dc.identifier: "testCases.py"
dc.source: >
  Mayer, F. and Vogel, C., "Block-Based Optimization for Frequency-Selective
  One-Bit Quantization", IEEE International Symposium on Circuits and Systems
  (ISCAS), 2025.
dc.language: "en"
dc.relation:
  - "Mayer, F. and Vogel, C., ISCAS 2024 - optimization-based one-bit quantization (OBAQ)"
  - "Mayer, F. and Vogel, C., ISCAS 2025 - block-based one-bit quantization (OBBQ)"
dc.coverage: "Synthetic multitone signals, normalized frequency 0 to pi, N = 2048 and 4096 samples"
dc.rights: >
  Research output, shared under CC BY 4.0. Funded by the Austrian Science Fund
  (FWF) [10.55776/DFH 5] within the DENISE project and the province of Styria.
---

# OA-OBBQ Test Case Set

## Contents

`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:

- **the input signal** — a multitone signal with energy confined to the
  band(s) `mWX`, normalized to the drive level `sBound`
- **the shaping filter** — the FIR filter whose matrix defines the cost
  function of the quantizer, specified by band(s) `mWD`, length `sL` and the
  Kaiser design parameters
- **the reconstruction filter** — the FIR filter used to evaluate the result,
  specified by band(s) `mR`; independent of the shaping filter
- **the block size** `sM` — the number of bits optimized jointly

## Variables

| 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.

## Groups

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.

## License

Shared under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).