Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Интерполятор АЧХ и ФЧХ
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
ivan219
Есть АЧХ и ФЧХ они практически линейны но значения есть только на определённых частотах.
Подскажить каким методом лучше всего интерполировать АЧХ и ФЧХ что бы можно было максимально точно (настолько на сколько это возможно) узнать значения на произвольной частоте?
polyakovav
для "практически линейных" функций логично начать с линейной интерполяции
SPACUM
Цитата(ivan219 @ Sep 1 2010, 19:03) *
Есть АЧХ и ФЧХ они практически линейны но значения есть только на определённых частотах.
Подскажить каким методом лучше всего интерполировать АЧХ и ФЧХ что бы можно было максимально точно (настолько на сколько это возможно) узнать значения на произвольной частоте?

Если функция минимально-фазная, и порядок известен - можно подобрать похожую из примитивов.
Если нет(сигнал приходит параллельно несколькими путями), то на участках без нулей применимы стандартные методы -
полиномиальная(Фарроу) и сплайны.
А на участках с нулями и отсутствием точек в нулях - ничего не поможет.
ivan219
Цитата(SPACUM @ Sep 3 2010, 12:19) *
Если функция минимально-фазная, и порядок известен - можно подобрать похожую из примитивов.
Если нет(сигнал приходит параллельно несколькими путями), то на участках без нулей применимы стандартные методы -
полиномиальная(Фарроу) и сплайны.
А на участках с нулями и отсутствием точек в нулях - ничего не поможет.


Что то я не совсем понял.

Попробую обяснить что хочу.
У меня есть 255 фиксированных гармоник ЛЧМ сигнала кторые равны гармоникам 512 точечного БПФ.
Этот сигнал проходит через определёную систему которя вносит свои искажения. На выходе я оцифровываю сигнал и делаю БПФ получаю значения 255 гармоник АЧХ и ФЧХ. Но мне нужно знать значения АЧХ и ФЧХ в произвольной точке. Как при помощи известных значений 255 гармоник узнать значение на произвольной частоте???
SPACUM
Цитата(ivan219 @ Sep 4 2010, 12:05) *
Что то я не совсем понял.

Я предполагал, что Вы имеете несколько значений коэффициента передачи и фазового сдвига для нескольких частот.
Если Вы хотите использовать БПФ, то сигнал должен быть стационарным, т.е. содержать только гармоники Фурье и период равный времени выборки.
Если это не так, то спектр Фурье не содержит ни одной реальной гармоники сигнала и не может использоваться для измерения АЧХ и ФЧХ устройства.
Изменение входного сигнала и реакция на него несомненно попадут в разные выборки.
ivan219
Цитата(SPACUM @ Sep 5 2010, 01:04) *
Если Вы хотите использовать БПФ, то сигнал должен быть стационарным, т.е. содержать только гармоники Фурье и период равный времени выборки.


Это я знаю и уже писал про это.

Цитата(ivan219 @ Sep 4 2010, 12:05) *
У меня есть 255 фиксированных гармоник ЛЧМ сигнала кторые равны гармоникам 512 точечного БПФ.


Меня интересует вот что:
Как узнать значение на произвольной частоте???
Если известны значения АЧХ и ФЧХ 255 гармоник стационарных содержащий только гармоники Фурье (512 БПФ) с периодом равным времени выборки. Нужен метод максимально точный вычислительные ресурсы не важны.
sup-sup
Цитата(ivan219 @ Sep 5 2010, 10:56) *
Это я знаю и уже писал про это.



Меня интересует вот что:
Как узнать значение на произвольной частоте???
Если известны значения АЧХ и ФЧХ 255 гармоник стационарных содержащий только гармоники Фурье (512 БПФ) с периодом равным времени выборки. Нужен метод максимально точный вычислительные ресурсы не важны.

По-моему, не хватает информации. Параметры ЛЧМ тоже дадут неопределенность. Может быть, Вам и не нужна большая точность чем предложенная линейная интерполяция.
Думаю, что можно проверить таким способом. Дополним число точек спектра нулями до 1024 (2048,..) и сделаем обратное FFT, а потом опять прямое FFT на увеличенном (удвоенном, учетверенном,..) числе точек. Это и будет самая "честная" интерполяция. Так можно делать до тех пор, пока мы не увидим существенного уменьшения ошибки по сравнению с линейной интерполяцией.
ivan219
Цитата(sup-sup @ Sep 5 2010, 13:30) *
По-моему, не хватает информации. Параметры ЛЧМ тоже дадут неопределенность.

Это по чемуже? ЛЧМ у меня делается так Фаза = Pi * (номер гармоники)^2 / 256;

Цитата(sup-sup @ Sep 5 2010, 13:30) *
Думаю, что можно проверить таким способом. Дополним число точек спектра нулями до 1024 (2048,..) и сделаем обратное FFT, а потом опять прямое FFT на увеличенном (удвоенном, учетверенном,..) числе точек. Это и будет самая "честная" интерполяция. Так можно делать до тех пор, пока мы не увидим существенного уменьшения ошибки по сравнению с линейной интерполяцией.


Попробую. Но что то мне подсказыват что из этого ли бо ничего не выйдет либо выйдет но не то. Ведь фазные компоненты при нехватке отсчётов могут быть другими.

Вот так выгледят граффики АЧХ и ФЧХ
sup-sup
Цитата(ivan219 @ Sep 5 2010, 12:56) *
Это по чемуже? ЛЧМ у меня делается так Фаза = Pi * (номер гармоники)^2 / 256;



Попробую. Но что то мне подсказыват что из этого ли бо ничего не выйдет либо выйдет но не то. Ведь фазные компоненты при нехватке отсчётов могут быть другими.

Вот так выгледят граффики АЧХ и ФЧХ

А Вы можете выложить оцифровки. Именно во времени.
SPACUM
Когда-то я пытался получить таким образом частотную характеристику. Но это не ЛЧХ, а сигнал содержащий все гармоники Фурье. Ничего хорошего не получилось из-за того, что требовался очень большой динамический диапазон у ЦАП и у АЦП в 16 раз больше уровня одной гармоники. А ЛЧХ я тоже пробовал - спектр Фурье невразумительный.
ivan219
Цитата(sup-sup @ Sep 5 2010, 16:21) *
А Вы можете выложить оцифровки. Именно во времени.

Да.
sup-sup
Цитата(ivan219 @ Sep 5 2010, 20:34) *
Да.

Все-таки в виде массива цифр было бы получше. А по картинке не понять какая точность интерполяции нужна. rolleyes.gif
ivan219
sup-sup
Данные в файле.

Подумал по эксперементировал и решил что Форроу 3 будет самое оно вот только для большей точности нужно исходных значений по больше а то ночальные и конечные значения получаются менее точные.
sup-sup
Цитата(ivan219 @ Sep 17 2010, 12:54) *
sup-sup
Данные в файле.

Подумал по эксперементировал и решил что Форроу 3 будет самое оно вот только для большей точности нужно исходных значений по больше а то ночальные и конечные значения получаются менее точные.

По предложенному сигналу видно, что это ЛЧМ + белый шум (примерно -40 дБ).
Считаем, что точности -60 дБ (1/1000) будет достаточно.
Дальше, раз есть выборки по времени, можно обойтись без FFT и тут же сделать увеличение числа выборок во времени, что и есть интерполяция.
В приложении я выбрал частоту сэмплирования 1000000Гц и повысил ее вдвое (добавил нули и применил FIR).
Промежуточные результаты в архиве.
Таким образом, перед расчетом АЧХ/ФЧХ нужно одинаково обработать (выполнить интерполяцию) выборки на входе и на выходе объекта, АЧХ/ФЧХ которого мы ищем.
ivan219
Цитата(sup-sup @ Sep 19 2010, 12:31) *
По предложенному сигналу видно, что это ЛЧМ + белый шум (примерно -40 дБ).

Это откуда же он там взялся да ещё и 40 дБ??? Это чисто синтезируемый ЛЧМ сигнал из 511 гармоник? Он даже в целый тип небыл переведён для того что бы передать звуковой карте и воспроизвести его unsure.gif
Точность скоторым этот сигнал синтезировался Double (8 байт) ошибки округления конечно есть но что бы так грубо!!!
sup-sup
Нажмите для просмотра прикрепленного файла
Цитата(ivan219 @ Sep 19 2010, 17:21) *
Это откуда же он там взялся да ещё и 40 дБ??? Это чисто синтезируемый ЛЧМ сигнал из 511 гармоник? Он даже в целый тип небыл переведён для того что бы передать звуковой карте и воспроизвести его unsure.gif
Точность скоторым этот сигнал синтезировался Double (8 байт) ошибки округления конечно есть но что бы так грубо!!!

На низкочастотной части отчетливо видны острые пички с частотой примерно Fs/2. Может быть, они продукт синтеза.
Вот, в Матлабе сгенерил ЛЧМ - нормальный вид и спектр (картинка справа):
ivan219
Спасибо посмотрел возможно где то допустил ошибку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.