Приветствую всех. Просьба сильно не пинать, верхнюю математику прогулял 18 лет назад (жалею).
Строю КИХ-фильтр по
The Scientist and Engineer's Guide to Digital Signal Processing. Задал АЧХ(фаза = 0), сделал обратное ДПФ (получил коэфф. с мнимой частью = 0), далее сдвигаю полученные отсчеты для получения импульсной характеристики. Согласно свойствам ПФ
из той же книги после сдвига отсчетов (чтобы нулевой отсчет попал в центр ИХ) фаза должна остаться нулевой, у меня же она нулевой ну никак не получается.
Провожу примитивный эксперимент: создаю массив с треугольным импульсом из пяти отсчетов, делаю ДПФ - результат тот же:
Код
--> a = [ 1 2 3 4 3 2 1]
a =
1. 2. 3. 4. 3. 2. 1.
-->dft(a,1)
ans =
2.2857143
- 0.6498453 + 0.3129490i
0.0274316 - 0.0343982i
- 0.0204434 + 0.0895686i
- 0.0204434 - 0.0895686i
0.0274316 + 0.0343982i
- 0.6498453 - 0.3129490i
Просто тупо повторяю описанное в книге: единичный первый отсчет - все как по книге, фаза = 0:
Код
--> a = [1 0 0 0 0 0 0]; dft(a,1)
ans =
0.1428571
0.1428571
0.1428571
0.1428571
0.1428571
0.1428571
0.1428571
Сдвигаю этот отсчет в центр - никакого намека на нулевую фазу. Причем числа такие, что на ошибки округления не похожи:
Код
--> a = [0 0 0 1 0 0 0]; dft(a,1)
ans =
0.1428571
- 0.1287098 + 0.0619834i
0.0890700 - 0.1116902i
- 0.0317887 + 0.1392754i
- 0.0317887 - 0.1392754i
0.0890700 + 0.1116902i
- 0.1287098 - 0.0619834i
Ну тут фаза хоть линейна. А если сделать выборку вот такой, то от линейности фазы не остается и следа:
Код
--> a = [0 0 1 0 1 0 0]; dft(a,1)
ans =
0.2857143
- 0.1604985 + 0.0772920i
- 0.0396399 + 0.0497068i
0.0572813 - 0.2509656i
0.0572813 + 0.2509656i
- 0.0396399 - 0.0497068i
- 0.1604985 - 0.0772920i
В чем я ошибаюсь, почему фаза ведет себя так странно?
P.S. Считаю в SciLab, программа в double на C дает те же результаты.
Еще вопрос: Для повышения разрешения ДПФ выборка с одной стороны дополняется нулевыми отсчетами. Правильно ли я понимаю, что при этом информация о фазе искажается? Почему в таком случае выборка не дополняется нулевыми отсчетами равномерно с обоих сторон?