2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Задержка фильтров в Матлабе не совпадает с действительностью
Сообщение02.02.2021, 15:04 


28/06/13
48
занимаюсь изучением групповой задержки цифровых фильтров (БИХ). В Матлабе есть функция 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 
Модератор


20/03/14
11520
 i  Тема перемещена из форума «Математика (общие вопросы)» в форум «Карантин»
по следующим причинам:

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



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

 Профиль  
                  
 
 Posted automatically
Сообщение03.02.2021, 07:23 
Модератор


20/03/14
11520
 i  Тема перемещена из форума «Карантин» в форум «Околонаучный софт»

 Профиль  
                  
 
 Re: Задержка фильтров в Матлабе не совпадает с действительностью
Сообщение03.02.2021, 10:04 


28/06/13
48
На https://dsp.stackexchange.com/ мне помогли с проблемой, вопрос решен.

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

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

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: maxal, Toucan, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group