Configure multi-RX output

Warning

Pre-implementation. Commands describe the target config surface.

Configure whether multi-receiver scenes are stored as one record per receiver or one joint record with a receiver axis.

When to use this

Use RecordAxis.PER_RX for ordinary classification, modulation recognition, and single-receiver detection. Use RecordAxis.JOINT when the model needs the receiver array jointly: AoA, beamforming, MIMO decoding, TDOA, or distributed sensing.

Prerequisites

Choose a scene preset or config with num_rx > 1, and choose a channel backend that supports the receiver correlation your task needs.

Minimal command path

One record per receiver:

rfgen generate +preset=multi_rx_detection_baseline \
    storage.record_axis=per_rx \
    storage.path=./out/multi-rx-per-rx

One joint record per scene:

rfgen generate +preset=multi_rx_detection_baseline \
    storage.record_axis=joint \
    storage.path=./out/multi-rx-joint

Example receiver array config:

scene:
  multi_rx:
    enabled: true
    num_rx: 4
    geometry: ula
    spacing_m: 0.5
storage:
  record_axis: joint

Verify

rfgen inspect ./out/multi-rx-per-rx summary
rfgen inspect ./out/multi-rx-joint sample --first 1

Expected shapes:

Mode

Stored IQ shape

per_rx

(2, N) per record

joint

(num_rx, 2, N) per record

Troubleshoot

Symptom

Fix

Joint task performs like independent receivers

Use a backend that preserves spatial correlation.

Training code expects (2, N)

Use storage.record_axis=per_rx or update the collator.

Dataset has more records than scenes

This is expected in per_rx mode. Group by scene_id when auditing.

Next steps