Конструкция фильтра Савицкого-Голая
Фильтры Савицкого - Голая используются для сглаживания шумных сигналов с большим частотным диапазоном. Сглаживающие фильтры Савицки-Голая имеют тенденцию отфильтровывать меньше высокочастотного содержимого сигнала, чем стандартные усредняющие фильтры FIR. Однако они менее успешно отклоняют шум, когда уровни шума особенно высоки.
В общем, фильтрация состоит из замены каждой точки сигнала некоторой комбинацией значений сигнала, содержащихся в движущемся окне, центрированном в точке, исходя из предположения, что близлежащие точки измеряют почти одно и то же нижележащее значение. Например, фильтры скользящего среднего заменяют каждую точку данных локальным средним для окружающих точек данных. Если данная точка данных имеет k точек слева и k точек справа, для общей длины окна L = 2k + 1 фильтр скользящего среднего производит замену
Фильтры Савицки-Голая обобщают эту идею наименьшими квадратами, подгоняющими многочлен n-го порядка через значения сигнала в окне и принимающими вычисленную центральную точку аппроксимированной полиномиальной кривой в качестве новой сглаженной точки данных. Для данной точки xs,
na0+a1 (1) +a2 (1) 2 + ⋯ + (1) n⋮a0+a1 (k) +a2 (k) 2 + ⋯ + (k) n]
или, в терминах матриц,
n100⋯01112⋯1n1222⋯2n1⋮⋮⋱⋮1kk2⋯kn] [a0⋮an]≡Ha.
Чтобы найти оценки Савицки-Голая, используйте псевдоинверсию H, чтобы вычислить a и затем предварительно умножить на H:
1HTx = Bx.
Во избежание плохого кондиционирования, sgolay использует qr функция для вычисления разложения H по экономичному размеру как H = QR, в терминах которого B = QQT.
Вычислять B необходимо только один раз. Оценки Савицки-Голая для большинства точек сигнала являются результатом свертки сигнала с центральной строкой В. Результатом является установившаяся часть отфильтрованного сигнала. Первые k рядов В дают начальный переходный процесс, а конечные k рядов В дают конечный переходный процесс. Посмотрите sgolayfilt например. Можно улучшить подавление шума за счет увеличения длины окна, но это вводит звон, аналогичный явлению Гиббса вблизи любых переходных процессов.
[1] Орфанидис, Софокл Дж. Введение в обработку сигналов. Энглвуд Клиффс, Нью-Джерси: Прентис Холл, 1996.
[2] Пресса, Уильям Х., Сол А. Теукольский, Уильям Т. Веттерлинг и Брайан П. Фланнери. Численные рецепты в C: Искусство научных вычислений. Нью-Йорк: Cambridge University Press, 1992.
[3] Шефер, Рональд У. "Что такое фильтр Савицки-Голея? [Примечания к лекциям]. " IEEE Signal Processing Magazine Vol. 28, Number 4, July 2011, pp. 111-117. https://doi.org/10.1109/MSP.2011.941097.
filter | fir1 | firls | sgolayfilt