I have a voice data contained in a vector. Vector length is 118796 and sampling frequency is 8000 Hz. So it's around 15 seconds of voice data.

When I doing frequency modulation with fmmod (Carrier 138 MHz, out sampling frequency 5*Carrier, freq. deviation 12.5 KHz) I getting the vector of the same size.

[voice fs] = audioread('female.wav');

Fc = 138 * 10^6;
Fs = 5*Fc;
frequency_deviation = 12.5 * 10^3;
modulated = fmmod(voice, Fc, Fs, frequency_deviation);

I thing output vector should be significantly longer because it represents much higher frequency but have the same "real time" duration of 15 seconds. Can anyone explain why matlab produce such output and how to get correct realtime output vector? I only assume to make input signal interpolation to make input vector as long as output vector should be.


The function fmmod cannot know the sampling frequency of your input signal. It assumes that the input signal has the sampling frequency Fs that you specify in the function call. Check out the example in the fmmod documentation.

By the way, in a software simulation, there's usually no need to choose such a high carrier frequency.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.