MATLAB: applique un filtre passe-bas ou passe-haut à un tableau
Existe-t-il un moyen facile d'appliquer un filtre passe-bas ou passe-haut à un tableau dans MATLAB? Je suis un peu submergé par le pouvoir de MATLABs (ou la complexité des mathématiques?) et besoin d'une fonction facile ou de quelques conseils car je ne pouvais pas le comprendre à partir de la documentation ou de la recherche sur le web.
2 réponses
Bien sûr, regardez la fonctionfilter .
Si vous avez juste besoin d'un filtre passe-bas à 1 pôle, c'est
xfilt = filter(a, [1 a-1], x);
Où a = T/ τ, T = le temps entre les échantillons, et τ (tau) est la constante de temps de filtre.
Voici le filtre passe-haut correspondant:
xfilt = filter([1-a a-1],[1 a-1], x);
Si vous avez besoin de concevoir un filtre et d'avoir une licence pour la boîte à outils de traitement du Signal, il y a un tas de fonctions, regardez fvtool et fdatool.
Vous pouvez concevoir un filtre Butterworth passe-bas en cours d'exécution, en utilisant la fonction butter()
, puis l'appliquer au signal.
fc = 300; % Cut off frequency
fs = 1000; % Sampling rate
[b,a] = butter(6,fc/(fs/2)); % Butterworth filter of order 6
x = filter(b,a,signal); % Will be the filtered signal
Les Filtres Passe-Haut Et Passe-bande sont également possibles avec cette méthode. Voir https://www.mathworks.com/help/signal/ref/butter.html