Frequency modulating a carrier by white noise and then demodulating the complex signal using discrete derivative of phase it appears that the discriminator is acting as a low-pass filter.
How do I calculate the rolloff vs modulating frequency for a given phase-based discriminator's impulse response?
I know about Octave's freqz function, but applying it to the discriminator's impulse response gives the frequency response of the discriminator, which in my understanding would translate to amplitude distortion of the demodulated signal, so this is not directly the frequency response of the modulate->demodulate chain which I'm looking for.
pkg load signal; orig_mono_240Khz = randn(1,150000); orig_mono_240Khz = orig_mono_240Khz - mean(orig_mono_240Khz); max_val = max([abs(max(orig_mono_240Khz)), abs(min(orig_mono_240Khz))])*1.2; subplot(2,1,1); plot(abs(fftshift(fft(orig_mono_240Khz)))); axis("tight"); phase_changes = j*75000*2*pi.*orig_mono_240Khz/max_val; signal = resample(exp(cumsum(phase_changes/240000)), 10, 1); signal = signal - min(signal); signal = round(signal/max([max(imag(signal)),max(real(signal))])*255); signal = signal - mean(signal); rcv_240 = decimate(signal, 10); unwrp_phase = unwrap(angle(rcv_240)); unwrp_phase = unwrp_phase - mean(unwrp_phase); disc_resp = [1, 0, -1]; phase_drv = conv(unwrp_phase, disc_resp)(100:end-100); phase_drv = phase_drv-mean(phase_drv); subplot(2,1,2); plot(abs(fftshift(fft(phase_drv)))); axis("tight");