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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> БПФ для оценки низкочастотной составляющей
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
Lmx2315
сообщение Aug 22 2011, 13:36
Сообщение #2


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



Цитата(roman73 @ Aug 22 2011, 17:32) *
Необходимо выделить периодическую составляющую временного ряда.
..
2.Обнуляются все частоты, кроме некоторого числа низких.
..


..очень похоже на ФНЧ, почему его нельзя применить?
Соорудить ФНЧ фильтр с требуемой полосой пропустить выборку через него - получить ваш сигнал.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
roman73
сообщение Aug 22 2011, 14:07
Сообщение #3





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



Чтобы не было недоразумений - фильтр нужен программный.

Эксперсс-гугление по запросу "программная реализация фнч" выдает какой-то бред...
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 22 2011, 14:17
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 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
Сообщение #5





Группа: Участник
Сообщений: 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
V_G
сообщение Aug 22 2011, 14:51
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



1. Во входном сигнале мнимой компоненты нет.
2. Вычисленное ДПФ из такого сигнала автоматом имеет симметричную действительную и антисимметричную мнимую части.
3. Если при обнулении частей спектра вы сохраните свойства симметрии действительной и мнимой частей, ОДПФ автоматом даст в результате нулевую мнимую часть.
4. Откуда уверенность, что после применения предложенного в начале алгоритма на выходе будет строго периодический сигнал (не учитывая естественной периодичности, связанной с длиной выборки)?

ЗЫ. Что Вы имели в виду, когда писали, что фильтр - программный? Все цифровые фильтры вычислительные (и в этом смысле программные) по определению.

Сообщение отредактировал V_G - Aug 22 2011, 14:56
Go to the top of the page
 
+Quote Post
roman73
сообщение Aug 22 2011, 15:03
Сообщение #7





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



Цитата(V_G @ Aug 22 2011, 18:51) *
4. Откуда уверенность, что после применения предложенного в начале алгоритма на выходе будет строго периодический сигнал (не учитывая естественной периодичности, связанной с длиной выборки)?

Нет такой уверенности.
Так в ТЗ написано.
Переименовал тему.

Цитата(V_G @ Aug 22 2011, 18:51) *
ЗЫ. Что Вы имели в виду, когда писали, что фильтр - программный? Все цифровые фильтры программные по определению.

Ну теоретически цифровой фильтр тоже можно схемно реализовать sm.gif
Имел в виду что интересует реализация на обычном компе с виндой.
Не интересует реализация на микроконтроллерах/плисах и т.д.
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 22 2011, 15:13
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 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, 15:43
Сообщение #9





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



Спасибо за разъяснения.
Данная операция точно может сойти за фильтр низких частот? sm.gif

Цитата(bahurin @ Aug 22 2011, 19:13) *
Какой библиотекой FFT пользуетесь?


Пока что никакой sm.gif присматриваюсь к FFTW.
Go to the top of the page
 
+Quote Post
bahurin
сообщение Aug 22 2011, 16:09
Сообщение #10


Местный
***

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



Цитата(roman73 @ Aug 22 2011, 19:43) *
Спасибо за разъяснения.
Данная операция точно может сойти за фильтр низких частот? sm.gif

да только не за фильтр ниЗКИХ частот, а за фильтр ниЖНИХ частот.
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Aug 22 2011, 16:22
Сообщение #11


Частый гость
**

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



Цитата(bahurin @ Aug 22 2011, 19:13) *
Есть два варианта.

Из них самый простой — третий: использовать FFT для вещественного сигнала. Оно и работает в 2 раза быстрее, и не возникает проблем с мнимой частью после IFFT.
Go to the top of the page
 
+Quote Post
petrov
сообщение Aug 22 2011, 16:52
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(roman73 @ Aug 22 2011, 19:43) *
Данная операция точно может сойти за фильтр низких частот? sm.gif


Данная операция фильтром не является, хотите использовать FFT для фильтрации - читайте про быструю свёртку.


Go to the top of the page
 
+Quote Post
Дмитрий_Б
сообщение Aug 22 2011, 16:56
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 25-10-09
Пользователь №: 53 195



Странная терминология. И неопределённая постановка задачи. Почитайте о свойствах спектров действительных сигналов и секционированной свёртке.
Go to the top of the page
 
+Quote Post
V_G
сообщение Aug 22 2011, 17:09
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



И еще предупреждение.
Простое отбрасывание ВЧ компонентов спектра вместо нормально рассчитанного ФНЧ дает очень плохую переходную характеристику: будьте готовы к большим выбросам и длительным переколебаниям в выходном сигнале.
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Aug 22 2011, 17:13
Сообщение #15


Частый гость
**

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



Цитата(petrov @ Aug 22 2011, 20:52) *
Цитата(roman73 @ Aug 22 2011, 19:43) *

Данная операция точно может сойти за фильтр низких частот? sm.gif

Данная операция фильтром не является, хотите использовать FFT для фильтрации - читайте про быструю свёртку.

Не является, но сойти может! laughing.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 04:27
Рейтинг@Mail.ru


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