I am trying to detect specific signals modulated at fc=75kHz with match filtering. Also, the detection is implemented in a 7 mins audio file with the sample rate of 312.5kHz (which leads to a very large amount of samples-about 135 million). This makes the processing and filtering process taking too much time and not applicable for real-time applications. Then, I decided to convert the signal to baseband equivalent model (to change the sampling frequency, hence decreases the number of samples) with the following code:
audio = audioread(file);
fc = 75000;
t = (1:length(audio)).';
y = audio*sqrt(2).*exp(-i*2*pi*fc*t);
but this doesn't work, I took the Fourier transform of both the orignial signal and the one after converting to baseband to observe the spectrum in frequency domain.
As you can see, the spectrum of the 75kHz signal doesn't move to the zero point.
My questions are:
- Is my code for converting to baseband wrong? If so, how can I convert this signal to baseband signal?
- Is there any other ways to significantly decrease the number of samples of this file without losing the information of 75kHz signal (I tried downsampling with sampling rate = 150kHz, but that is still too many samples)?
t = (1:length(audio)).';
byt = (1:length(audio)).'/312500;
to properly define time, accounting for the original sampling rate. Also, you may need to apply a low-pass filter after multiplication by the imaginary exponential. Perhaps a band-pass filter before the conversion would help too – Luis Mendo