# White noise generation for different bandwidth signals in MATLAB

I'm working on simulating an uplink scenario in satellite communication. The goal is to send a preamble + data to the satellite from ground station. Data symbols have a bandwidth of $$15\ \rm kHz$$ and the preamble has a bandwidth of $$180\ \rm kHz$$.

I'm simulating the transmitter, channel and receiver in MATLAB. I've a question regarding how to introduce white noise.

I read that variance of white noise depends on the bandwidth of the signal. $$SNR = \frac{P}{NB}$$ Where $$P$$ is the power of signal, $$N$$ is PSD of white noise, $$B$$ is the bandwidth of the signal. In above case, the signal contains 2 parts, preamble + Data. Preamble has $$180\ \rm kHz$$ of bandwidth, whereas data has only $$15\ \rm kHz$$.

How to generate the white noise in this scenario? What should be the variance of the noise?

Regarding the bandwidth, this should be the channel bandwidth from the channel symbol rate $$R_{ch}$$. The preamble and stuff like ASMs (attached synch markers) are used for synchronization purposes and are appended to the data before the modulator. Everything (data + preamble/ASM) is then transmitted as one block from the modulator, and this constitutes the channel data. You then get the channel symbol rate $$R_{ch} = \frac{R_b}{r_{ch}}$$ Where $$R_b$$ is the raw bit rate, and $$r_{ch}$$ is the channel code rate.

One technicality to be aware of is that white Gaussian noise has infinite bandwidth. What you are asking for is filtered white noise, which has a flat PSD in a given bandwidth, and zero power outside of it. It is common to call this filtered noise "white noise", but you should be aware of the difference.

With that out of the way, consider the channel between the ground station and the satellite. The noise in this channel is modeled as white Gaussian, with $$\text{PSD} = N/2$$. Assuming a filter with bandwidth $$B$$, the power of the filtered noise is, as you say, $$NB$$ (because the power is the integral of the PSD from minus infinity to infinity, which includes negative frequencies).

Now you need to define the receiver filter. It is very unusual, in my experience, to transmit a signal with two different bandwidths. You have two choices for the receiver design: a single filter with bandwidth 180 kHz, or two filters, one of 180 kHz and another of 15 kHz.

The single-filter design is obviously cheaper and much simpler to implement. The drawback is that it is quite suboptimal, as the data signal will be subject to much more noise than it would with a 15 kHz filter.

The two-filter design will be much more complex (I have never seen a real system implemented like this). The benefit is that it will be optimal.

In Matlab, you can generate filtered white noise of variance 1 with randn. After that, it's just a matter of scaling the noise appropriately to get the variance you want.

• Currently I generate the white noise as follows, white_noise = (rms(txSignal)*sqrt((10^-(snr_db/10)))/sqrt(2))*(randn(txSignal) + 1i * randn(txSignal); When I plot the BER, it is much worse than I expected. I believe this is due to noise scaling. Am I scaling the noise correctly while generating? Is there better way to scale, since both the preamble + data have different bandwidths? Dec 9, 2020 at 15:18
• Regarding filter design at the rx: Since the data belongs to single user, & preamble is used for time sync & freq offset correction, there is no need for designing 2 filters. Currently I design single filter with pass band of around 200 kHz. Dec 9, 2020 at 15:27

I think you'll need to specify where you're adding the noise in your model. Are you adding at the Tx output or in the Rx before or after the filter? In one of your comments you show that you're scaling the noise based on an apparent TX SNR spec. I assume that means you'll want to add the noise at the Tx output. In that case you'd use the tx signal bandwidth to scale the white noise. Then the channel and Rx filter should limit the noise bandwidth for you yielding non-white, band-limited, noise at the detector.