занимаюсь изучением групповой задержки цифровых фильтров (БИХ). В Матлабе есть функция grpdelay, которая позволяет для конкретной частоты получить значение задержки в сэмплах
Однако применение фильтров и сопоставление картинок дает другие результаты. Грубо говоря, получается, что если по функции задержка должна быть 50 отчетов, она получается 100, если 30, то 70. Что я делаю не так? Использую простой синус, обработанный окном гаусса в качестве примера
t = 0:0.008:600; // 125 Гц, 10 минут
x = sin( 2 * pi * t * 1.3 ) .* gausswin(length(t) )'; // 1.3 Гц основная частота
x = [ zeros(1, 1000) x zeros(1, 1000) ]; // добавил нули с обоих концов
....
y = filter(b, a, x); // b, a - коэффициенты фильтра, можно брать например Баттерворт или эллиптический
plot(x) // оригинальный сигнал
hold on;
plot(y) - обработанный фильтром
grpdelay(b,a,512, 125); // строим групповую задержку, смотрим на графике на интересующую нас частоту по оси X и берем значение по Y на этой частоте - это количество сэмплов на которое должен быть сдвинут сигнал
ниже пример теоретического и модельного несоответствия
https://snipboard.io/qz07DL.jpghttps://snipboard.io/l1dP9F.jpgВыходит, что функция Матлаба дает неточные результаты или какая-то ошибка у меня в вычислениях/интерпретации?