Contenu principal

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

fractalcoef

Coefficients de filtre pour la génération de bruit fractal

Depuis R2023b

Description

coeffs = fractalcoef renvoie les coefficients de filtre pour générer du bruit fractal avec une densité spectrale de puissance de 1/ f, où f est la fréquence. Pour plus d'informations sur le filtrage du bruit, voir filter.

Conseil

Vous pouvez utiliser les coefficients générés pour spécifier la propriété BiasInstabilityCoefficients du accelparams, gyroparams ou magparams objet $ .

coeffs = fractalcoef(numPoles) spécifie le nombre de pôles dans les coefficients du dénominateur du filtre.

exemple

coeffs = fractalcoef(numPoles,alpha) spécifie également la valeur alpha (α) pour le bruit fractal avec une densité spectrale de puissance de 1/ f α. Lorsque α = 1, le bruit généré est également appelé bruit rose.

exemple

Exemples

réduire tout

Spécifiez d’abord la fréquence, le nombre d’échantillons et le nombre de pôles pour la génération de bruit.

rng default % For repeatable results
Fs = 100;
numSamples = 2160000;
numPoles = 5;

Obtenez les coefficients de filtre à l'aide de la fonction fractalcoef .

coeffs = fractalcoef(numPoles);

Générez du bruit blanc et filtrez le bruit pour obtenir un bruit rose.

wn = randn(numSamples,1);
pn = filter(coeffs.Numerator,coeffs.Denominator,wn);

Générez la variance Allan du bruit rose.

[avar,tau] = allanvar(pn,"octave",Fs);

Tracez la déviation d'Allan du bruit rose.

figure
adev = sqrt(avar);
loglog(tau, adev)
title("Allan Deviation of Pink Noise")
xlabel("\tau");
ylabel("\sigma(\tau)")
grid on
axis equal

Figure contains an axes object. The axes object with title Allan Deviation of Pink Noise, xlabel tau, ylabel sigma ( tau ) contains an object of type line.

Définissez le nombre d'échantillons, le nombre de pôles et les valeurs alpha utilisées pour générer du bruit fractal.

rng default % For repeatable results
numSamples = 1e4;
numPoles = 1e3;
alphaValues = [0.1,0.5,1,1.5,1.9];

Créez une série de bruit blanc.

whiteNoise = randn(numSamples,1);

Générez du bruit fractal avec différentes valeurs d'alpha à l'aide des fonctions fractalcoef et filter . Tracez le bruit fractal généré.

figure
for ii = 1:numel(alphaValues)
    coef = fractalcoef(numPoles,alphaValues(ii));
    fractalNoise = filter(coef.Numerator,coef.Denominator,whiteNoise);
    subplot(numel(alphaValues),1,ii)
    plot(fractalNoise)
    title("\alpha = " + num2str(alphaValues(ii)))
end

Figure contains 5 axes objects. Axes object 1 with title alpha blank = blank 0.1 contains an object of type line. Axes object 2 with title alpha blank = blank 0.5 contains an object of type line. Axes object 3 with title alpha blank = blank 1 contains an object of type line. Axes object 4 with title alpha blank = blank 1.5 contains an object of type line. Axes object 5 with title alpha blank = blank 1.9 contains an object of type line.

Arguments d'entrée

réduire tout

Nombre de pôles dans les coefficients du dénominateur du filtre, spécifié sous forme d'entier positif.

Exemple : 2

Types de données : single | double

Valeur alpha (α), spécifiée sous forme de scalaire dans la plage (0,2). La fonction renvoie les coefficients de génération de bruit fractal avec une densité spectrale de puissance de 1/ f α.

Exemple : 0.9

Types de données : single | double

Arguments de sortie

réduire tout

Coefficients de génération de bruit fractal, renvoyés sous forme de structure. La structure comporte deux champs :

  • Numérateur — Numérateur de coefficients, renvoyé sous la forme 1.

  • Dénominateur — Dénominateur des coefficients, renvoyé sous la forme d'un vecteur 1 par (P+1) de scalaires, où P est le nombre de pôles.

Références

[1] Kasdin, N. J. “Discrete Simulation of Colored Noise and Stochastic Processes and 1/fα Power Law Noise Generation.” Proceedings of the IEEE, vol. 83, no. 5, May 1995, pp. 802–27.

Capacités étendues

développer tout

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Historique des versions

Introduit dans R2023b