I try to use the AWGN Channel model of MATLAB to build my simulation model, but the explanation of the relationship between Es/N0 and SNR in the official manual of MATLAB makes me confused.

It says that :

\begin{align} E_s/N_0 \ \text{(dB)}&= 10\log_{10}(T_{sym}/T_{samp})+SNR\ \text{(dB)}\quad\text{for complex input signals}\\ E_s/N_0 \ \text{(dB)}&= 10\log_{10}(0.5T_{sym}/T_{samp})+SNR\ \text{(dB)}\quad\text{for real input signals} \end{align}

I wonder why there is a $3\ \rm dB$ difference whether the signal is complex or real.

  • $\begingroup$ You sure those aren't backwards? I would think you'd see the 0.5 factor in the complex case since you don't want to double the noise b/c of the real and imaginary components. $\endgroup$ Commented Aug 14, 2020 at 10:38
  • $\begingroup$ I not sure if I get your point. Do you mean that the official manual of MATLAB is wrong? To be honest, I think the 0.5 factor should appear in the complex case, too. Because for a specific noise power (variance), the bandwidth of a baseband complex signal is B, and the bandwidth of a passband real signal is 2B, just as showed in the MATLAB manual, thus the noise spectral density in complex case is twice in the real case. $\endgroup$
    – Wtswkz
    Commented Aug 14, 2020 at 13:05

2 Answers 2


Ignoring quantisation noise, if you anti alias filter a signal at 2x the nyquist rate and then sample at 2x the nyquist rate then you capture twice the bandwidth of thermal noise. The discrete signal power remains the same because the PSD of the signal doubles but it is averaged over 2x as many samples, half of which are equal to 0. The discrete noise PSD remains the same but is now present over 2x as many samples, therefore the noise power is double. The SNR therefore halves.

If you reconstruct the signal above after filtering and oversampling, as you increase the oversampling factor (with anti aliasing filter to half this sampling frequency) the signal power doesn't change, the noise power doesn't change, the PSDs are $T_s = 2\pi/f_s$ times greater than the discrete PSDs in the event that a brick wall filter is used. As continuous power is the integral of the PSD of the reconstructed signal, the power of noise is double when the sampling rate doubles as it has double the bandwidth, but the power of the signal remains the same. Continuous SNR also halves when the sampling rate doubles. The $2\pi$ factor introduced by multiplying by $T_s$ is normalised by $1/2\pi$ in the continuous power formula.

$E_s/N_0$ is essentially the SNR of the symbol, within the symbol bandwidth, so the SNR if the signal were filtered to the symbol bandwidth before sampling or oversampling. SNR is 2x smaller than the $E_s/N_0$ when you oversample by a factor of 2. This is because only noise within the symbol bandwidth is considered.

Discrete $E_s$ is the sum of the PSD, and continuous $E_s$ is discrete $E_s$ multiplied by $T_s = 2\pi/f_s$ if using a brick wall filter. The sum of the signal PSD is always the same regardless of sampling rate and the sum of the noise PSD is the same because only the noise in the symbol samples are considered.

$N_0$ is the noise PSD when the time signal is complex because there's a $N_0/2$ noise added in the I time channel and $N_0/2$ added in the Q time channel. When this is demodulated to baseband, if the negative half of the frequency spectrum is not the complex conjugate of the positive half and contains useful data, then the bandwidth is considered to be B and not 2B because there's is no mirror of B, and the noise PSD is $N_0$, but if it is the complex conjugate then the other half is considered to be a mirror of B, the useful bandwidth, and therefore the bandwidth is denoted 2B with $N_0/2$ noise (which almost never happens for a complex signal, because usually complex exponentials are used meaning there is no image). The 'complex baseband' matlab depiction with $N_0$ PSD has no mirror, though visually misleading, and the bandwidth is $B$ and not $2B$. Furthermore, if only a real channel is used, when it is demodulated (with just cos) you end up with $N_0/2$ and a $B$ bandwidth, or $N_0/4$ with a $2B$ bandwidth.

I postulate 2 reasons for this difference in the real and complex matlab definition:

  1. For a real signal $E_s$ is half that of a complex signal, but $N_0$ is still referring to $N_0$ and not the actual noise $N_0/2$

  2. It may be that $N_0$ is referring to $N_0/2$ but it is only taking into consideration the signal in the useful symbol bandwidth $E_s/4$ and not the full symbol bandwidth, but the noise in the full symbol bandwidth $N_0/4 + N_0/4 = N_0/2$ and comparing those.

  • $\begingroup$ Whoa, thanks for you answer. I think your answer is almost correct. But there are some points I cannot agree with. <br/> 1. $\endgroup$
    – Wtswkz
    Commented Sep 11, 2021 at 15:47
  • $\begingroup$ 1. You say that the useful energy is half is because of the useful bandwidth is half. I guess you want to express that the useful energy in a real time channel is half that of a complex channel. But I think no matter for a real signal or for a complex signal, the whole signal power is useful power, except the noise power in it. That's to say, for a real signal, the signal power equals to the real part of the signal which is useful energy as you called it, because there is no imagine part. $\endgroup$
    – Wtswkz
    Commented Sep 11, 2021 at 16:05
  • $\begingroup$ For a complex signal, it's true that the power of the real part is half of the whole signal power. But the power of the imagine part is part of the useful energy, too. $\endgroup$
    – Wtswkz
    Commented Sep 11, 2021 at 16:06
  • $\begingroup$ 2. I don't think the SNR would halve if the sampling rate is doubled. For a specific signal, the signal power, noise power and signal bandwidth are determined, they can't be changed by increasing the sampling rate. I think the sampling bandwidth is not equivalent to the signal bandwidth. When the sampling bandwidth is doubled, for this digital system, N0 is halved, which makes the noise power is unchanged. Thus, the SNR is doubled in my opinion when the sampling rate is doubled. $\endgroup$
    – Wtswkz
    Commented Sep 11, 2021 at 16:17
  • $\begingroup$ You can find a evidence by doing a sampling noise experiment. Suppose you generate a noise sequence of zero mean, and sigma standard variance. Then you can get two different sub-sequences by selecting one data in different interval. Then, calculate the variance of the two sub-sequences, you will find they both are the square of sigma, which is the power of the noise. $\endgroup$
    – Wtswkz
    Commented Sep 11, 2021 at 16:22

This comes from the Mathworks' website

In my opinion, no matter it's complex signal or real signal, the SNR equals to the input signal power, S, divided by the noise power, N. The difference is, for complex signal,

S = Si + Sq, (Si = Sq, no consideration of IQ imbalance)

and for real signal,

S = Si or S = Sq

Then, no matter it's complex or real,

Es = S*Tsym


N0 = N*Tsamp


Es/N0 = 10*log10(Tsym/Tsamp) + SNR

Then, the question is why there is a 0.5 factor exists in the Es/N0 formula of real signal as the documentation of MATLAB AWGN CHANNEL model illustrated. I suppose it's because the AWGN CHANNEL just simply think the signal power that is specified through SNR or Eb/N0 or Es/N0 in the AWGN model configuration panel is the power of a complex signal. So, if one want to specify a SNR of 10dB in case of a real signal, he/she has to set the SNR to 13dB in the configuration panel.

  • $\begingroup$ When you take the real part of complex noise, you remove half the power. For a typical complex noise given with real and imaginary components as $I+ jQ$, the noise on $I$ and the noise on $Q$ are IID random variables- the total power is the power on $I$ plus the power on $Q$. $\endgroup$ Commented Jan 10, 2022 at 14:57
  • $\begingroup$ This was my understanding: dsp.stackexchange.com/questions/54251/… (is it wrong?) $\endgroup$ Commented Jan 10, 2022 at 16:53

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.