# How to convert time-domain signal to complex envelope?

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.

• 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). Sep 27, 2015 at 22:08
• 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. Sep 28, 2015 at 0:36
• 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. Sep 28, 2015 at 13:38
• @robertbristow-johnson, in the context of digital communicaitons (such as FSK in the question), complex envelope refers to this: en.wikipedia.org/wiki/…
– MBaz
Sep 28, 2015 at 13:49
• so it's the complex analytic signal bumped down by some specified frequency, $\omega_0$. i might call that "IF". Sep 28, 2015 at 23:35

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$.

• 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. Sep 30, 2015 at 13:03
• @bradreaves, yes, that is correct. Taking the real part of the baseband signal loses information.
– MBaz
Sep 30, 2015 at 13:20