Quelle est la meilleure façon de traiter les coefficients du filtre ? - page 2

 

Aujourd'hui, un de nos amis bannis a partagé sur Skype un lien vers le logiciel Matlab analogue gratuit http://www.scilab.org/.

Je vais devoir voir ce que c'est.

Quoi qu'il en soit, pendant l'installation, il est indiqué qu'il utilise les bibliothèques d'Intel (la bibliothèque MKL d'Intel est gratuite depuis déjà un an), ce qui est une bonne nouvelle.

-----------

Si, au cours des étapes d'installation du logiciel, vous choisissez de sélectionner l'Intel MKL

et/ou de la bibliothèque FFTW3 fournie dans la bibliothèque MKL d'Intel, la bibliothèque

L'installation et l'utilisation de la bibliothèque MKL d'Intel sont soumises au CLUF d'Intel [1].

à laquelle vous acceptez ensuite d'être lié.

Home - Scilab
Home - Scilab
  • Scilab Enterprises
  • www.scilab.org
Scilab Official Website
 
Timur Gatin:

Un générateur de méthodes numériques?

En général, je suis d'accord pour un filtre à évier.


Il utilise des dlls d'intel et du paquet lapack. Au fait, ce n'est que la deuxième fois de ma vie que je vois un dll être admis dans la kodobase ! Après tout, les MK ont toujours été contre ces mesures potentiellement dangereuses.

Peut-être qu'ils me laisseront entrer aussi ? Il y a beaucoup de choses intéressantes en préparation.

 
Combien de ces chances y a-t-il ? Il serait bon de les voir tous, c'est-à-dire l'option 1 (textuelle). Les options 2 et 5 seraient également utiles
 

Je ne comprends pas bien les coefficients du filtre. Les coefficients de filtrage, à partir du deuxième ordre, dépendent de façon non linéaire de la fréquence de coupure, ou si vous préférez, de la période de lissage.

Si vous donnez des coefficients spécifiques, cela signifie-t-il pour certaines fréquences (périodes) spécifiques ? Est-ce que je comprends bien ?

 
Alexey Volchanskiy:

Aujourd'hui, un de nos amis bannis a partagé sur Skype un lien vers le logiciel Matlab analogue gratuit http://www.scilab.org/.

Je vais devoir voir ce que c'est.

Quoi qu'il en soit, lors de l'installation, il est indiqué qu'il utilise les bibliothèques Intel (la bibliothèque Intel MKL est gratuite depuis un an déjà), ce qui est bien.

C'est une bonne chose - un analogue gratuit de MathLab. Il est même en grande partie compatible, c'est-à-dire que les programmes MathLab vont dans SciLab et vice versa. Je ne l'ai pas essayé, mais c'est ce qu'il déclare.

Influencé par Sanych, j'ai commencé par R, mais il ne me convient pas très bien en général, si bien que j'ai fini par venir à SciLab. À l'origine, il a été conçu pour traiter des signaux pour des tâches d'ingénierie radio, et il est un peu plus proche de moi). Et les statistiques de SciLab sont également suffisantes.

 
Yuriy Asaulenko:

Je ne comprends pas bien les coefficients du filtre. Les coefficients du filtre, à partir du deuxième ordre, dépendent de manière non linéaire de la fréquence de coupure, ou si vous préférez, de la période de lissage.

Si vous donnez des coefficients spécifiques, cela signifie-t-il pour certaines fréquences (périodes) spécifiques ? Est-ce que je comprends bien ?


Pas vraiment. Si vous prenez des fréquences réelles pour les calculs, et que vous définissez la bande passante en Hz, elle sera toujours convertie en une fréquence normalisée de 0 à 1. Et cette fréquence normalisée ne dépend plus de la fréquence d'échantillonnage, ni des valeurs réelles en Hz.

L'exemple réel pour le commerce est un taux d'échantillonnage de 4Hz, c'est-à-dire que le timer fonctionne avec une période de 250ms. La largeur de bande du filtre passe-bas LPF (analogue au muving) est de 0,04-0,4 Hz. Convertissez tout en fréquence normalisée, divisez simplement toutes les fréquences par la fréquence d'échantillonnage, nous obtenons une bande passante de 0,01-0,1.

Les coefficients sont les suivants

double coeff[77] = {
0.0020403288714222, 0.0009819655397928, 0.0011225519005867, 0.0011964370038970, 0.0011779675029415, 0.0010436596580495, 
0.0007732498419909, 0.0003535344421556, -0.0002219434905004, -0.0009469112562786, -0.0018062225251740, -0.0027691214309082, 
-0.0037944927090922, -0.0048248454791543, -0.0057936459361424, -0.0066213616961954, -0.0072249511520868, -0.0075155986002137, 
-0.0074086882831938, -0.0068221975313534, -0.0056865034528597, -0.0039448978330095, -0.0015624214733406, 0.0014713627928496, 
0.0051450870992394, 0.0094188377587497, 0.0142247666794483, 0.0194626330409670, 0.0250204215515161, 0.0307523534113099, 
0.0365038435854891, 0.0421106663853138, 0.0474013760205897, 0.0522124336902514, 0.0563870184354613, 0.0597902427400937, 
0.0623061126904552, 0.0638517409542778,
0.0643721286293195, // центр симметрии
 0.0638517409542778, 0.0623061126904552, 0.0597902427400937, 
0.0563870184354613, 0.0522124336902514, 0.0474013760205897, 0.0421106663853138, 0.0365038435854891, 0.0307523534113099, 
0.0250204215515161, 0.0194626330409670, 0.0142247666794483, 0.0094188377587497, 0.0051450870992394, 0.0014713627928496, 
-0.0015624214733406, -0.0039448978330095, -0.0056865034528597, -0.0068221975313534, -0.0074086882831938, -0.0075155986002137, 
-0.0072249511520868, -0.0066213616961954, -0.0057936459361424, -0.0048248454791543, -0.0037944927090922, -0.0027691214309082, 
-0.0018062225251740, -0.0009469112562786, -0.0002219434905004, 0.0003535344421556, 0.0007732498419909, 0.0010436596580495, 
0.0011779675029415, 0.0011964370038970, 0.0011225519005867, 0.0009819655397928, 0.0020403288714222};

Et voici un exemple d'image pour trois filtres BF avec différentes gammes de fréquences, respectivement, différentes longueurs.

fir3

EURUSD, 15.03.2017, taux d'échantillonnage 2 Hz, suppression 40 dB

 
Yuriy Asaulenko:

Si vous donnez des coefficients spécifiques, cela signifie-t-il pour certaines fréquences (périodes) spécifiques ? Est-ce que je comprends bien ?

J'ai maintenant réalisé un programme Matlab pour moi-même, qui écrit un ensemble de tableaux de coefficients dans un fichier au format double. Les paramètres des tableaux et leur quantité peuvent être définis dans les paramètres.

Et il y a une classe MQL qui peut lire l'ensemble requis.

C'est ainsi que je vais l'afficher. De plus, je compléterai le cours pour être capable de sélectionner l'ensemble des coefficients requis et de les écrire sur disque sous forme binaire et textuelle.

 
Yuriy Asaulenko:

C'est une bonne chose - un analogue gratuit de MatLab. Il est même largement compatible, c'est-à-dire que les programmes MatLab vont dans SciLab, et vice versa. Je ne l'ai pas essayé, mais il est déclaré ainsi.

Influencé par Sanych, j'ai commencé par R, mais il ne me convient pas très bien en général, si bien que j'ai fini par venir à SciLab. À l'origine, il a été conçu pour traiter des signaux pour des tâches d'ingénierie radio, et il est un peu plus proche de moi). Et les statistiques de SciLab sont également suffisantes.

Je ne le connais pas, car ce n'était pas nécessaire. Eh bien, rien, nous allons l'étudier rapidement).
 
Alexey Volchanskiy:

J'ai maintenant un programme Matlab pour moi, qui écrit un ensemble de tableaux de coefficients dans un fichier en format double. Les paramètres des tableaux et leur nombre peuvent être définis dans les paramètres.

Et il y a une classe MQL qui peut lire l'ensemble requis.

C'est ainsi que je vais l'afficher. En outre, j'améliorerai la classe pour qu'elle soit capable de sélectionner l'ensemble des coefficients requis et de les écrire sur disque sous forme binaire et textuelle.

Donc, à en juger par le nombre de coefficients, vous utilisez des filtres FIR ?

J'utilise BIH - il n'y a pas beaucoup de coefficients, mais à partir de la forme normalisée, la fréquence est plus difficile à recalculer. Ils ne s'adaptent pas si facilement.

 
Alexey Volchanskiy:
Je ne le connais pas du tout, car je n'en ai pas eu besoin. C'est bon, nous allons l'étudier rapidement).
Si vous êtes dans le MathLab, il n'y a pas de problème. Au moins avec les bibliothèques communes aux deux. Mais je ne sais pas s'il est judicieux de remplacer une pièce de gâteau par une pièce de gâteau, car leurs fonctionnalités sont très proches.