esiste un modo semplice per applicare un filtro passa-basso o passa-alto a un array in MATLAB? Sono un po 'sopraffatto dal potere del MATLAB (o dalla complessità della matematica?) E ho bisogno di una funzione facile o di una guida poiché non sono riuscito a capirlo dalla documentazione o dalla ricerca sul web.MATLAB: applica un filtro passa-basso o passa-alto a un array
risposta
sicuro, guarda la funzione filter.
Se basta un filtro passa-basso 1 polo, è
xfilt = filter(a, [1 a-1], x);
dove a = T/τ, T = tempo tra i campioni, e τ (tau) è la costante di tempo del filtro.
Ecco il corrispondente filtro passa-alto:
xfilt = filter([1-a a-1],[1 a-1], x);
Se avete bisogno di progettare un filtro, e hanno una licenza per il Signal Processing Toolbox, c'è a bunch of functions, guarda fvtool e fdatool.
È possibile progettare un filtro Butterworth passa-basso in runtime, utilizzando la funzione butter()
e applicarlo al segnale.
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
Con questo metodo sono anche possibili filtri passa-alto e passa-banda. Vedi https://www.mathworks.com/help/signal/ref/butter.html
Avviso. Ciò richiede il Signal Processing Toolbox. – rayryeng
Sapevo che sarebbe stato così semplice. Molte grazie! – Christian