Matlab and Simulink Communications Toolbox digital demodulators are defined to only work on the complex envelope representation of a baseband signal.

To obtain the time-domain representation of this signal, I believe one takes the real part of the complex envelope.

Given just this real part, how does one convert the time-domain representation of modulated data back into a complex envelope such that a Matlab demodulator will demodulate it?

Application: I'm trying to simulate a simple audio FSK system in Simulink.

  • $\begingroup$ To clarify, I've tried to apply the "Analytic Signal" block to the time-domain representation, but that gives erroneous results (even after taking into account the delay of the Analytic Signal block). $\endgroup$
    – bradreaves
    Sep 27, 2015 at 22:08
  • $\begingroup$ do you want the envelope of the complex analytic signal? because that envelope is real and non-negative. in fact, i don't know of any "envelope" that is complex or negative in value. $\endgroup$ Sep 28, 2015 at 0:36
  • $\begingroup$ I'm using Matlab's definition of "complex envelope" as described here: mathworks.com/help/comm/ug/digital-modulation.html#fp46613 Specifically I'm talking about the vector Y. I could have some of the terminology confused, though. $\endgroup$
    – bradreaves
    Sep 28, 2015 at 13:38
  • $\begingroup$ @robertbristow-johnson, in the context of digital communicaitons (such as FSK in the question), complex envelope refers to this: en.wikipedia.org/wiki/… $\endgroup$
    – MBaz
    Sep 28, 2015 at 13:49
  • $\begingroup$ so it's the complex analytic signal bumped down by some specified frequency, $\omega_0$. i might call that "IF". $\endgroup$ Sep 28, 2015 at 23:35

1 Answer 1


These are the main ideas:

  1. Consider a receiver that picks up a signal $r(t)$. This signal has bandwidth $W$ and is centered on carrier frequency $f_c$.
  2. Using the Hilbert transform, eliminate the negative frequencies of $r(t)$. The resulting signal, $r_+(t)$, is called an analytic signal.
  3. Now, downconvert the analytic signal using a complex exponential, so that the spectrum is centered around 0. This signal, called $\tilde r(t)$, is the complex envelope of $r(t)$. Its spectrum goes from $-W/2$ to $W/2$, and its bandwidth is $B=W/2$.
  4. The complex envelope is almost always complex, but if the spectrum of $r(t)$ is symmetrical around $f_c$, the CE is real. Examples of this are AM DSB and BPSK.

In the transmitter you would do the opposite:

  1. Start with a complex envelope $\tilde s(t)$ that represents the information you want to transmit. Its spectrum should go from $-W/2$ to $W/2$. An example would be a QAM signal with complex symbols.
  2. Upconvert the CE to frequency $f_c$, multiplying by a complex exponential. The result is an analytic signal with only positive frequencies. The signal will be centered around $f_c$ and cover the frequency range from $f_c-W/2$ to $f_c+W/2$.
  3. Take the real part of the analytic signal to convert it to a real signal that can be physically generated and transmitted.

All of these steps can be accomplished in Matlab. Be sure to read the documentation for the hilbert command. I can't comment on the corresponding Simulink blocks, since I don't use them.

Also note that it is very likely that you don't have to do all this. If you can perform all your simulations using the complex envelope, you'll save a lot of computing time. The reason is that the transmitted and received signals need to be sampled at least at a rate $2(f_c+W/2)$, whereas the complex envelope can be sampled at $W$ real samples per second -- a huge difference for large $f_c$.

  • $\begingroup$ It seems that my problem was that I wasn't actually moving the data up to passband before taking the real part. If I understand correctly, if you skip that step you are losing information that's in the negative frequency in the baseband. $\endgroup$
    – bradreaves
    Sep 30, 2015 at 13:03
  • 1
    $\begingroup$ @bradreaves, yes, that is correct. Taking the real part of the baseband signal loses information. $\endgroup$
    – MBaz
    Sep 30, 2015 at 13:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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