How to generate correlated noise

30 Ansichten (letzte 30 Tage)
ric1321
ric1321 am 8 Aug. 2018
Beantwortet: Anudeep Kumar am 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'.

Antworten (1)

Anudeep Kumar
Anudeep Kumar am 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:

Kategorien

Mehr zu Digital and Analog Filters finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by