How to generate correlated noise

19 visualizzazioni (ultimi 30 giorni)
ric1321
ric1321 il 8 Ago 2018
Risposto: Anudeep Kumar il 30 Giu 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'.

Risposte (1)

Anudeep Kumar
Anudeep Kumar il 30 Giu 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:

Categorie

Scopri di più su Digital and Analog Filters in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by