|
БПФ для оценки низкочастотной составляющей |
|
|
|
Aug 22 2011, 13:32
|
Группа: Участник
Сообщений: 13
Регистрация: 25-05-11
Пользователь №: 65 262

|
Доброго времени суток!
Необходимо выделить низкочастотную составляющую временного ряда. Алгоритм по ТЗ такой: 1.Делается БПФ. 2.Обнуляются все частоты, кроме некоторого числа низких. 3.Делается обратное БПФ.
Вопросы: Если применять классическое БПФ, что делать с мнимой частью сигнала? Допустим, мнимая часть входного сигнала устанавливается в 0. А что делать с мнимой частью результирующего сигнала? Или можно применить другое преобразование вместо Фурье, работающее только с действительным сигналом? Косинус-преобразование? Хартли? Насколько я знаю, преобразование Хартли напрямую не даёт частоты, а что-то другое. А как с этим у косинус-преобразования? Применимо ли тут RealFFT? Какой из перечисленных алгоритмов лучше для данного случая? Где взять эффективные реализации?
Число отсчетов ~50000-100000
Сообщение отредактировал roman73 - Aug 22 2011, 14:55
|
|
|
|
|
Aug 22 2011, 14:07
|
Группа: Участник
Сообщений: 13
Регистрация: 25-05-11
Пользователь №: 65 262

|
Чтобы не было недоразумений - фильтр нужен программный.
Эксперсс-гугление по запросу "программная реализация фнч" выдает какой-то бред...
|
|
|
|
|
Aug 22 2011, 14:17
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347

|
Цитата(roman73 @ Aug 22 2011, 17:32)  Доброго времени суток!
Необходимо выделить периодическую составляющую временного ряда. Алгоритм по ТЗ такой: 1.Делается БПФ. 2.Обнуляются все частоты, кроме некоторого числа низких. 3.Делается обратное БПФ. Простите, конечно, но кто вам такое бредовое ТЗ выдал? То что вы описали это цифровой фнч, обладающий очень плохими характеристиками и выполненный настолько неэффективно, насколько это возможно. Хотя, нет можно еще хуже если вместо FFT применять наивный способ вычисления DFT. Если же все-таки необходимо выполнить через обнуление FFT (для того чтобы порадовать начальство или преподавателей), то смело обнуляйте как реальную так и мнимую части на выходе FFT. После обратного FFT в вашем сигнале появится мнимая часть, но если вы правильно обнулите спектр, то она будет равна нулю (ну или очень маленькой типа 10^-18). На каком хоть языке программирования надо этот шедевр реализовать?
Сообщение отредактировал bahurin - Aug 22 2011, 14:25
|
|
|
|
|
Aug 22 2011, 14:35
|
Группа: Участник
Сообщений: 13
Регистрация: 25-05-11
Пользователь №: 65 262

|
Цитата(bahurin @ Aug 2+2 2011, 18:17)  Простите, конечно, но кто вам такое бредовое ТЗ выдал? То что вы описали это цифровой фнч, обладающий очень плохими характеристиками и выполненный настолько неэффективно, насколько это возможно. Хотя, нет можно еще хуже если вместо FFT применять наивный способ вычисления DFT. В общем обсуждать это нет смысла. Может про периодическую составляющую и не совсем правда, но тз нужно реализовать и в кратчайший срок. (К тому же это не единственная обработка сигнала). По поводу обнуления - в будущем вместо него может быть что-то другое. Я понимаю, что это решение неэффекетивно, и можно использовать разные оптимизации (например вычисление не всех коэффициентов ПФ, Герцель и т.д.) но на это просто нет времени. Цитата(bahurin @ Aug 22 2011, 18:17)  Если же все-таки необходимо выполнить через обнуление FFT (для того чтобы порадовать начальство или преподавателей), то смело обнуляйте как реальную так и мнимую части на выходе FFT. После обратного FFT в вашем сигнале появится мнимая часть, но если вы правильно обнулите, то она будет равна нулю (ну или очень маленькой типа 10^-18). На каком хоть языке программирования надо этот шедевр реализовать? Поподробнее пожалуйста. В чём заключается правильное обнуление? По поводу языка - желательно Visual C/C++.
|
|
|
|
|
Aug 22 2011, 15:03
|
Группа: Участник
Сообщений: 13
Регистрация: 25-05-11
Пользователь №: 65 262

|
Цитата(V_G @ Aug 22 2011, 18:51)  4. Откуда уверенность, что после применения предложенного в начале алгоритма на выходе будет строго периодический сигнал (не учитывая естественной периодичности, связанной с длиной выборки)? Нет такой уверенности. Так в ТЗ написано. Переименовал тему. Цитата(V_G @ Aug 22 2011, 18:51)  ЗЫ. Что Вы имели в виду, когда писали, что фильтр - программный? Все цифровые фильтры программные по определению. Ну теоретически цифровой фильтр тоже можно схемно реализовать  Имел в виду что интересует реализация на обычном компе с виндой. Не интересует реализация на микроконтроллерах/плисах и т.д.
|
|
|
|
|
Aug 22 2011, 15:43
|
Группа: Участник
Сообщений: 13
Регистрация: 25-05-11
Пользователь №: 65 262

|
Спасибо за разъяснения. Данная операция точно может сойти за фильтр низких частот?  Цитата(bahurin @ Aug 22 2011, 19:13)  Какой библиотекой FFT пользуетесь? Пока что никакой  присматриваюсь к FFTW.
|
|
|
|
|
Aug 22 2011, 16:22
|

Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000

|
Цитата(bahurin @ Aug 22 2011, 19:13)  Есть два варианта. Из них самый простой — третий: использовать FFT для вещественного сигнала. Оно и работает в 2 раза быстрее, и не возникает проблем с мнимой частью после IFFT.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|