Frank (DD4WH),

I added a Hilbert transform (type = 4)

I generates a complex filter where real part is simply a delay and the imaginary part is the Hilbert transform (with Kaiser window)

(window length is now twice the number of coefficients)

So you could do for

USB modulation (Matlab language)

Code:

f1 = fftfilt(ht, f0);
f2= real(f1).*cos(2*pi*fc*t) - imag(f1).*sin(2*pi*fc*t);

where

ht are the (complex) Hilbert transform coefficients

fo is the real audio signal

fc is the modulation (IF) frequency

f2 is the real USB signal

and for USB demodulation

Code:

f3 = fftfilt(ht, f2);
f4= real(f3).*cos(2*pi*fc*t) + imag(f3).*sin(2*pi*fc*t);

where

f4 is again the real audio signal

to change to LSB you have to change to signs before ' imag(.)'

Caveat: It worked on matlab but have not tried with real I/Q signal

Question? what is the typical IF for SDR?

The QRP article by VE3MKC talks about 11 kHz. Is that typical or only driven by the 44.1 kHz sampling of the audio card?

Note:

an alternative approach to do Hilbert transforms would be to simply put all negative frequencies to zero and multiply positive frequencies by 2, letting DC unchanged. This may be useful if you wanted to combine Hilbert transform with band-pass filter.

edit: some errors corrected in Hilbert filter