How to generate correlated noise

12 views (last 30 days)
ric1321
ric1321 on 8 Aug 2018
Answered: Anudeep Kumar on 30 Jun 2025
Hi to everyone. I have to generate some correlated noise with Gaussian-like pdf and autocorrelation. It's quite simple in theory: incorrelated Gaussian noise generated with randn(1,...) filtered with a 1D Gaussian FIR filter, whose impulse response is equal to the desired noise autocorrelation. My issue is to implement the Gaussian FIR filter. I could use gaussdesign(bt,span,sps): - bt: the 3dB passband - span: number of symbols - sps: samples per symbol But I don't know how to use 'span' and 'sps'.

Answers (1)

Anudeep Kumar
Anudeep Kumar on 30 Jun 2025
I understand you want to generate correlated noise with Gaussian-like pdf and autocorrelation and you are facing difficulty in 'gaussdesign' function especially the parameters 'span' and 'sps'.
As per the documentation here is what each parameter means:
  • bt: The bandwidth-time product. It controls the width of the Gaussian pulse in the frequency domain. A typical value is between 0.3 and 0.5.
  • sps: This defines how many samples we want to represent one symbol.Think of it as the resolution of our filter. A higher sps means a smoother and more accurate representation of the Gaussian shape. For instance: If sps = 8, then each symbol is represented by 8 samples.
  • span – Filter Span in SymbolsThis defines how many symbols the filter spans. It controls the total length of the filter in terms of symbols. Total filter length = span × sps samples For example: If span = 6 and sps = 8, then the filter will have 6 × 8 = 48 taps (coefficients).
bt = 0.3;
span = 6;
sps = 8;
gFilter = gaussdesign(bt, span, sps);
  • We get a filter with 48 coefficients.
  • The filter spans 6 symbols, each represented by 8 samples.
  • The shape of the filter is Gaussian, and its impulse response approximates a Gaussian function.
This will give you a 1D FIR filter with a Gaussian shape. We can then use it to filter white Gaussian noise:
whiteNoise = randn(1, 1000); % Generate white Gaussian noise
correlatedNoise = conv(whiteNoise, gFilter, 'same'); % Apply Gaussian filter
I have attached the documentation of 'guassdesign' for your reference:

Categories

Find more on Digital and Analog Filters in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!