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.

24
demandé sur Christian 2009-11-23 17:58:10

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.

32
répondu Jason S 2009-11-23 15:19:40

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

4
répondu Ahmad 2017-01-15 09:58:02