Filtres FIR - page 14

 
ssd >> :

Sabluk, sois un ami et donne-moi ce "filtre adaptatif" pour mes expériences.


Alors, qu'allez-vous faire avec ce filtre ? Vous ne vous souciez pas de savoir à quoi il s'adapte, pourquoi ou comment ?

 
begemot61 >> :

Alors, qu'allez-vous faire avec ce filtre ? Ne vous souciez-vous pas de savoir à quoi il s'adapte, pourquoi et comment ?

------------------------------------------------------------------------------------------------------

En bref, idéalement, le filtre-indicateur, selon mes idées, devrait indépendamment

analyser le spectre des données historiques fournies à son entrée et adapter/ajuster de manière dynamique

caractéristiques de filtrage en fonction de la composition spectrale du signal d'entrée.


En d'autres termes, ce sont les "facteurs de pondération" dans la formule du filtre numérique linéaire


Y[i] = B[0] X[i] + B[1] X[i-1] + .... - A[1] Y[i-1] - A[2] Y[i-2] - ....

Ici, X est la série temporelle d'entrée, Y est la série temporelle de sortie, A et B sont des ensembles de poids.


doit s'adapter au spectre du signal d'entrée.


 
sab1uk >>:
begemot61 подскажи как можно по простому конвертировать твой фильтр с определенными параметрами в импульсную характеристику и записать ее в файл или в массив из глобальных переменных?

Ces coefficients sont stockés dans le tableau global double NormCoef[] et sont pris en compte par Normalization().Normalization() utilise les fonctions FilterOrder(), Io(double x). Vous n'avez pas besoin des fonctions PriceSelect(), FilterResponse(int index_of_bar) Quelles sont les variables globales à laisser voir par vous-même. Je compte Normalization() une fois, lors de l'initialisation. Si vous avez un filtre adaptatif, Normalization() devrait être dansstart(). Dans ce cas, je réfléchirais à la manière de l'accélérer. Eh bien, par exemple, je réduirais la précision de calcul de la fonction de Bessel Io(double x) d'un chiffre. T.e double besselAccuracy=0.00001

 
begemot61 >> :

Ces coefficients sont stockés dans le tableau global double NormCoef[] et sont pris en compte par Normalization().Normalization() utilise les fonctions FilterOrder(), Io(double x). Vous n'avez pas besoin des fonctions PriceSelect(), FilterResponse(int index_of_bar) Quelles sont les variables globales à laisser voir par vous-même. Je compte Normalization() une fois, lors de l'initialisation. Si vous avez un filtre adaptatif, Normalization() devrait être dansstart(). Dans ce cas, je réfléchirais à la manière de l'accélérer. Eh bien, par exemple, je réduirais la précision de calcul de la fonction de Bessel Io(double x) d'un chiffre. T.e double besselAccuracy=0.00001.

Merci ! J'ai juste besoin de récupérer le FIR et de l'exécuter dans mon design.

en d'autres termes, utiliser la partie initialisation du filtre comme un générateur.

 

Une question s'est posée :

Les lectures du filtre sur les différents horizons temporels doivent-elles être cohérentes, lorsque les paramètres du filtre sont modifiés en conséquence ? (par exemple, paramètres H1 = paramètres H4 * 4 )

 
neoclassic >> :

Une question s'est posée :

Les lectures du filtre sur les différents horizons temporels doivent-elles être cohérentes, lorsque les paramètres du filtre sont modifiés en conséquence ? (par exemple, paramètres H1 = paramètres H4 * 4 )

Le filtre lui-même ne montre rien. Il traite les données qui lui sont fournies en entrée. Si les données sont différentes, le résultat du traitement est également différent. Bien que l'algorithme de traitement soit le même

 

Hippo, cela a-t-il un sens de faire varier le paramètre PassBandRipple ?

pourquoi exactement est-il réglé sur 30 ?

 
sab1uk >> :

Hippo, cela a-t-il un sens de faire varier le paramètre PassBandRipple ?

pourquoi exactement 30 séries ?

Le fait est que le filtre avec l'implémentation de Kaiser de la fonction fenêtre implique de sélectionner la pire des deux conditions - la pulsation dans la bande passante et la suppression dans la bande de retard. Comme il ne peut pas fournir les deux conditions en même temps, l'une des exigences s'avère être meilleure que l'exigence réelle. En réalité, une suppression de 20 dB correspond à une ondulation de +/-0,83 dB, une suppression de 40 dB correspond à une ondulation de +/-0,086 dB. Pour mes besoins, ce sont des valeurs assez faibles. Par conséquent, je règle simplement l'ondulation de la bande passante sciemment plus grande que toute valeur possible et je n'y prête pas attention. Bien que l'estimation soit présente dans le code et puisse être utilisée si nécessaire.

 

sab1uk, est-ce que je comprends bien les principes du filtre passe-bande ?

et une autre question : est-il possible de contourner les restrictions d'ordre des filtres dans le GCM (2500) ?

 
le BandPass est le différentiel entre les deux LPF (LowPass), de la même manière que le bâtard MACD est dérivé de la différence des mashups.
si vous voulez un filtre d'ordre 2500+ ou une période de coupure de 300+, utilisez le filtre Behemoth
mais son filtre n'est pas adapté à tous les cas...
a essayé de faire 1000 dB d'amortissement ou 0,000000000000001 dB de roll-off, mais n'a pas réussi à obtenir la même résonance aiguë dans l'AFC que les filtres de l'oscillateur