2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Задержка фильтров в Матлабе не совпадает с действительностью
Сообщение02.02.2021, 15:04 
занимаюсь изучением групповой задержки цифровых фильтров (БИХ). В Матлабе есть функция grpdelay, которая позволяет для конкретной частоты получить значение задержки в сэмплах

Однако применение фильтров и сопоставление картинок дает другие результаты. Грубо говоря, получается, что если по функции задержка должна быть 50 отчетов, она получается 100, если 30, то 70. Что я делаю не так? Использую простой синус, обработанный окном гаусса в качестве примера

код: [ скачать ] [ спрятать ]
Используется синтаксис Matlab M
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.jpg
https://snipboard.io/l1dP9F.jpg


Выходит, что функция Матлаба дает неточные результаты или какая-то ошибка у меня в вычислениях/интерпретации?

 
 
 
 Posted automatically
Сообщение02.02.2021, 23:09 
 i  Тема перемещена из форума «Математика (общие вопросы)» в форум «Карантин»
по следующим причинам:

Листинг кода компьютерных программ и языков разметки приведен без использования тегов code или syntax (оба присутствуют окном правки ответа).



Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 
 
 
 Posted automatically
Сообщение03.02.2021, 07:23 
 i  Тема перемещена из форума «Карантин» в форум «Околонаучный софт»

 
 
 
 Re: Задержка фильтров в Матлабе не совпадает с действительностью
Сообщение03.02.2021, 10:04 
На https://dsp.stackexchange.com/ мне помогли с проблемой, вопрос решен.

Если коротко, то на приведенной картинке показана фазовая задержка, а не групповая задержка. Групповая задержка показывает запаздывание огибающей, в то время как фазовая - запаздывание несущей. Более подробно можно посмотреть здесь

https://dspillustrations.com/pages/post ... ample.html

Таким образом, если вместо grpdelay использовать функцию phasedelay - теория будет соответствовать модели.

Думаю, что вопрос решен, пишите если что-то упустил

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group