Есть ли простой способ применить фильтр нижних частот или верхних частот к массиву в MATLAB? Я немного перегружен мощью MATLAB (или сложностью математики?), И вам нужна простая функция или какое-то руководство, поскольку я не мог понять это из документации или поиска в Интернете.
MATLAB: применить фильтр низких частот или верхних частот к массиву
Ответ 1
конечно, посмотрите filter.
Если вам нужен только 1-полюсный фильтр нижних частот, это
xfilt = filter(a, [1 a-1], x);
где a = T/& tau;, T = время между образцами и & tau; (tau) - постоянная времени фильтра.
Здесь соответствующий фильтр верхних частот:
xfilt = filter([1-a a-1],[1 a-1], x);
Если вам нужно создать фильтр и получить лицензию на Toolbox Toolbox, куча функций, посмотрите fvtool и fdatool.
Ответ 2
Вы можете создать фильтр Lowter Butterworth во время выполнения, используя функцию butter()
, а затем применить это к сигналу.
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
С этим методом возможны также и верхние и полосовые фильтры. См. https://www.mathworks.com/help/signal/ref/butter.html