TorchDSP / torchsig

TorchSig is an open-source signal processing machine learning toolkit based on the PyTorch data handling pipeline.
MIT License
161 stars 37 forks source link

Review randomized pulse shaping for FSK/MSK #66

Closed MattCarrickPL closed 1 year ago

MattCarrickPL commented 1 year ago
  1. The randomized pulse shaping filter as part of FSKDataSet(), _generate_samples() in synthetic.py may not be needed. Presumably the filter is used to attenuate the sidelobes of FSK and MSK as part of randomized impairments, see paper "Large Scale Radio Frequency Signal Classification", section 3.2.2 Randomized Pulse Shaping. Unclear if this randomization provides value to the RFML algorithms.

  2. If the randomized pulse shaping filter is needed, then the filter length approximation on line 770 needs to be corrected because it's generating filters that are too large. The approximation can be simplified as num_taps = int(115/lpf_bandwidth). Because lpf_bandwidth < 1, the filter length becomes a massive number. A different filter length approximation is needed.

MattCarrickPL commented 1 year ago
  1. The resampling in lines 788-800 may not be necessary. Randomized pulse shaping controls the amount of energy in the sidelobes for QAM/PSK and GMSK/GFSK as described in "Large Scale Radio Frequency Signal Classification", Figure 11. Randomization for QAM/PSK is over the roll-off factor and for GMSK/GFSK it is over the time-bandwidth product, both of which control the amount of sidelobe levels in the signal.

The low-pass filtering implements a similar feature for controlling the sidelobes of FSK/MSK but there is also a resampling which changes the oversampling factor, lines 788-800. The resampling is not present in the QAM/PSK or GMSK/GFSK modulators. From Figure 11, notice that the spacing between the two tones varies for FSK but does not vary for GFSK.

Randomized resampling is an separate impairment in the paper, described in Section 3.2.3, Random Resample. The resampling implemented by resample_poly() likely needs to be removed.

MattCarrickPL commented 1 year ago

Mods submitted via https://github.com/TorchDSP/torchsig/pull/79