реклама на сайте
подробности

 
 
> БПФ для оценки низкочастотной составляющей
roman73
сообщение Aug 22 2011, 13:32
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 25-05-11
Пользователь №: 65 262



Доброго времени суток!

Необходимо выделить низкочастотную составляющую временного ряда.
Алгоритм по ТЗ такой:
1.Делается БПФ.
2.Обнуляются все частоты, кроме некоторого числа низких.
3.Делается обратное БПФ.

Вопросы:
Если применять классическое БПФ, что делать с мнимой частью сигнала?
Допустим, мнимая часть входного сигнала устанавливается в 0.
А что делать с мнимой частью результирующего сигнала?
Или можно применить другое преобразование вместо Фурье, работающее только с действительным сигналом?
Косинус-преобразование? Хартли? Насколько я знаю, преобразование Хартли напрямую не даёт частоты, а что-то другое.
А как с этим у косинус-преобразования?
Применимо ли тут RealFFT?
Какой из перечисленных алгоритмов лучше для данного случая?
Где взять эффективные реализации?

Число отсчетов ~50000-100000

Сообщение отредактировал roman73 - Aug 22 2011, 14:55
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bahurin
сообщение Aug 22 2011, 14:17
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
roman73
сообщение Aug 22 2011, 14:35
Сообщение #3





Группа: Участник
Сообщений: 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++.
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 22 2011, 15:13
Сообщение #4


Местный
***

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



Цитата(roman73 @ Aug 22 2011, 18:35) *
Поподробнее пожалуйста.
В чём заключается правильное обнуление?
По поводу языка - желательно Visual C/C++.


Есть два варианта. Если входной сигнал вещественный то вы делаете fft получаете комплексный спектр S(k), k = 0.. N-1 N - количество точек FFT. Потом вы можете обнулить все отсчеты S(k) при k>k0, k0 - индекс выше которого надо обнулить. Обнуляете как реальную так и мнимую часть. Делаете IFFT получаете комплексный сигнал на выходе, мнимую часть отбрасываете, реальную удваиваете. Второй вариант обнулить не все что спектральные отсчеты k>k0, а обнулить только с индексами k0<k<N-k0, тогда вы сохраните свойство симметрии преобразования фурье вещественного сигнала и получите на выходе ifft нулевую мнимую часть и ничего не надо будет удваивать. Какой библиотекой FFT пользуетесь?

Сообщение отредактировал bahurin - Aug 22 2011, 15:16
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- roman73   БПФ для оценки низкочастотной составляющей   Aug 22 2011, 13:32
- - Lmx2315   Цитата(roman73 @ Aug 22 2011, 17:32) Необ...   Aug 22 2011, 13:36
- - roman73   Чтобы не было недоразумений - фильтр нужен програм...   Aug 22 2011, 14:07
|- - roman73   Спасибо за разъяснения. Данная операция точно може...   Aug 22 2011, 15:43
||- - bahurin   Цитата(roman73 @ Aug 22 2011, 19:43) Спас...   Aug 22 2011, 16:09
||- - petrov   Цитата(roman73 @ Aug 22 2011, 19:43) Данн...   Aug 22 2011, 16:52
||- - Alexey Lukin   Цитата(petrov @ Aug 22 2011, 20:52) Цитат...   Aug 22 2011, 17:13
|- - Alexey Lukin   Цитата(bahurin @ Aug 22 2011, 19:13) Есть...   Aug 22 2011, 16:22
|- - bahurin   Цитата(Alexey Lukin @ Aug 22 2011, 20:22)...   Aug 22 2011, 17:54
- - V_G   1. Во входном сигнале мнимой компоненты нет. 2. В...   Aug 22 2011, 14:51
|- - roman73   Цитата(V_G @ Aug 22 2011, 18:51) 4. Откуд...   Aug 22 2011, 15:03
- - Дмитрий_Б   Странная терминология. И неопределённая постановка...   Aug 22 2011, 16:56
- - V_G   И еще предупреждение. Простое отбрасывание ВЧ комп...   Aug 22 2011, 17:09
|- - petrov   Цитата(V_G @ Aug 22 2011, 21:09) И еще пр...   Aug 22 2011, 17:13
- - Alexey Lukin   Вы не про то говорите. Я говорю про FFT, которое с...   Aug 22 2011, 19:00


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 21:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016