2014 dxdy logo

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

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




 
 БПФ
Сообщение18.01.2017, 22:24 
не понимаю как восстановить частоту/амплитуду/фазу в БПФ. Имеется набор комплексных чисел (N/2 , N - кол-во измерений входного сигнала), то есть пары Re Im. Моделирую сигнал с помощью синусоид/косинусоид (например (cos(5x)-6sin(3x-7) и тд). Восстанавливаю амплитуду, фазу и частоту по формулам:
А = 1/N(sqrt(Re^2+Im^2)
phase = arctg(Rr/Im)
v = k/T (где k - индекс полученной гармоники, то есть 0...N/2)
Очевидно, получается бред. Так как спектр очень размазывается. Причем нет полностью совпадающих амплитуд/фаз/частот. Я не понимаю как их восстановить и самое главное, как определить количество гармоник!! так как независимо от того, мы измеряем 1024 раза 1 гармонику или 123 гармоники, например, получается 512 комплексных пар. Как понять что в первом случае у нас всего одна гармоника, а во втором 123 и восстановить их?

 
 
 
 Re: БПФ
Сообщение18.01.2017, 22:55 
Аватара пользователя
Цитата:
Причем нет полностью совпадающих амплитуд/фаз/частот.

Потому, что условие(свойства) применения дискретного преобразования Фурье забыли выучить.

Цитата:
Как понять что в первом случае у нас всего одна гармоника, а во втором 123 и восстановить их?

Отбросте, те которые близки к нулю. Плюс правильные условия эксперимента должны быть. Плюс применения окон что-бы компенсировать утечки спектра.

 
 
 
 Re: БПФ
Сообщение18.01.2017, 23:02 
амплитуды , близкие к нулю или что? и какие считать близкими к нулю? они варьируются от 0.4 до 1.2 (значения меняются в зависимости от разных входных гармоник), 0.5 считать близким к нулю или нет? здесь ведь нельзя делать примерно, отбросив 3,4 нужные гармоники сигнал исказится. Окна ведь не отбросят все лишние гармоники, а лишь часть + не восстановят сигнал

 
 
 
 Re: БПФ
Сообщение18.01.2017, 23:04 
annaLilia в сообщении #1185753 писал(а):
Восстанавливаю амплитуду, фазу и частоту по формулам:
А = 1/N(sqrt(Re^2+Im^2)
phase = arctg(Rr/Im)
Формулы вроде бы правильные (хотя фазу надо бы как arctan2(im, re)). Видимо, вы неправильно извлекаете компоненты комплексных чисел из массива, который выдаёт БПФ. Посмотрите справку по этой функции — там должно быть описано, что она как возвращает.

Хотя действительно забыл то, что выше написали: проверьте, не генерируете ли вы там гармоники с частотой выше частоты Найквиста.

P. S.
annaLilia в сообщении #1185753 писал(а):
получается 512 комплексных пар
Обычно всё же 513 комплексных чисел, два из которых вещественны. Если функция, которой вы пользуетесь, возвращает 512, она что-то скрывает.

 
 
 
 Re: БПФ
Сообщение18.01.2017, 23:12 
она возвращает (для 1024 измерений) 1024 комплексных пары. одна реальная - первая, вторую половину отсекаю из-за зеркального эффекта

-- 18.01.2017, 22:17 --

формулу для фазы поменяла, спасибо, не обратила внимания! но результат по-прежнему не радует

 
 
 
 Re: БПФ
Сообщение18.01.2017, 23:27 
annaLilia в сообщении #1185777 писал(а):
вторую половину отсекаю из-за зеркального эффекта
Так вы не узнаете амплитуду частоты Найквиста, с которой эта половина начинается. Если она вам нужна, конечно.

annaLilia в сообщении #1185777 писал(а):
но результат по-прежнему не радует
Смотрите тогда
arseniiv в сообщении #1185774 писал(а):
не генерируете ли вы там гармоники с частотой выше частоты Найквиста

 
 
 
 Re: БПФ
Сообщение18.01.2017, 23:29 
не генерирую

 
 
 
 Re: БПФ
Сообщение18.01.2017, 23:36 
Тогда остаётся только смотреть код.

Если частота гармоники такова, что целое число её периодов не укладывается в набор отсчётов, от которого берётся БПФ, то в результате будет не одно число, а несколько, локализованных в области частот, близких к частоте этой гармоники.

 
 
 
 Re: БПФ
Сообщение18.01.2017, 23:43 
ооо, как же забыла за это!!! это уже хорошо =) спасибо большое!!

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


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