![]() |
|
|
![]()
|
|
| RTG |
|
|||
|
Unregistered |
Доброго времени суток!
Имеется следующая проблема: известные мне алгоритмы преобразования Фурье обрабатывают массив исходних данных целиком. А хотелось бы иметь алгоритм который может делать ПФ (дискретное, трехмерное) по мере поступления данних. Просто во время сбора данных (время которого сократить не удается) хотелось бы производить часть вычислений, и что бы после сбора всех данных оставалось минимум вычислений. Общая сложность алгоритма роли не играет. Может кто подскажет алгоритм (и, если можно, его реализацию на С/С++)? Заранее спасибо! |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
на сколько мне известно для БПФ преобразования по части данных не возможно
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| RTG |
|
|||
|
Unregistered |
Да, для БПФ нет, а для обычного дискретного?
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
имхо, тоже нет
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
каждый коэффициент Фурье - взвешенная сумма входных отсчетов, при получении каждого отсчета прибавляй его к каждому коэффициенту с соответствующим множителем...
-------------------- qqq |
|||
|
||||
| Alexei |
|
|||
|
Unregistered |
Может сгодится.
" Ничего не мешает нам взять, допустим, 1000 отсчетов, дополнить их еще 64536 нулями справа и подвергнуть получившуюся штуку разложению с FFT = 65536. Таким образом мы получим большое разрешение и по времени, и по частоте. Побочные эффекты? Лишь уменьшение амплитуды спектра и изменение до неузнаваемости фазовых компонент. Но мы ведь их и так не используем, мы лишь строим спектр! Амплитуду можно поправить, её изменение вычисляется. Вывод: при одном лишь анализе мы можем получить какое угодно разрешение по времени и по частоте одновременно." http://websound.ru/index.cgi?articles/theory/fft |
|||
|
||||
| DonPager |
|
|||
|
Колдырь ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 28.3.2003 Где: Воронеж Репутация: нет Всего: 2 |
В зависимости от задачи для которой используется ПФ можно уменьшить буфер для расчёта...
Например в моей программе он составляет 10 отсчётов.. но ПФ работает ТОЛЬКО для моей задачи... так что напиши немного про основную задачу.. -------------------- кодер + лодырь = колдырь |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
К сожалению, одновременно этого достичь нельзя: либо хорошее разрешение по частоте, либо по времени. Ибо работает принцип неопределенности Гейзенберга. |
|||
|
||||
| podval |
|
||||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Кстати, и в той самой статье не забыли написать
Но не могу согласиться с автором этой статьи, который заявляет, что сие утвердение неверно. Пусть докажет обратное. Тот самый прием, которым хвалится автор, на самом деле является операцией вычисления БПФ, страшно сказать, ДРУГОГО сигнала, который уже не похож на исходный. |
||||
|
|||||
| Alexei |
|
|||
|
Unregistered |
Но тогда,само по себе выхватывание "куска" непрерывного сигнала для БПФ тоже делает его другим(импульс), а применение оконных функций вообще -преступление.Что же тогда делать? |
|||
|
||||
| SCHEPA |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 174 Регистрация: 7.6.2003 Где: Н.Н. Репутация: нет Всего: нет |
Прием повышения разрешения по частоте путем добавления нуле в конец массива очень широко используется в радиолокации. Что разрешение увеличивается доказывается очень элементарно. Пусть есть реализация сигнала длиной T секунд. Мы его дискретизируем с периодом dt. При этом получаем N=T/dt выборок. (T=N*dt) Тогда частотное разрешение dF=1/T=1/(N*dt). Если перед нахожденеим спектра добить нулями в два раза, то колличество выборок будет 2N, и при неизменных остальных параметрах частотное разрешение будет dF=1/(2*N*dt), то есть в два раза выше. По поводу изменения до неузнаваемости фазовых компонент, вопрос спорный. Например, для оптимальной фильтрации ЛЧМ сигналов есть так называемый метод прыгающего БПФ. Суть: ищется спектр сигнала (выше изложенным методом), затем спектр умножается на комплексную характеристику оптимального фильтра и делается обратное БПФ. На выходе получаем мощный выброс в месте нахождения ЛЧМ сигнала. А если бы фаза искажалась бы то сигнал в таком фильтре не сжимался бы. --------------------
Так что в лучших книгах всегда нет имен... |
||||
|
|||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Сам себя сейчас перечитал и немного ... того... Я хотел сказать, что операция дополнения нулями не является чем-то новым и нигде не описанным. Эта вещь известна давно и позволяет при короткой выборке, дополненной нулями с помощью БПФ на большом окне получить немного другой спектр, а именно боле близкий к теоретическому. Т.е. мы получаем действительно более высокое разрешение по частоте, т.к. на отдельно взятом частотном промежутке получаем больше спектральных составляющих, как и сказал уже SCHEPA. Но насчет увеличения разрешения по времени - это уже, извините, подвиньтесь. |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Да не такое уж оно и преступление. Окнами пытаются как-то компенсировать недостатки БПФ - невозможность полного знания о поведении сигнала на всей оси времени (надо знать будущее поведение сигнала) и невыполнение требования стационарности реальных сигналов. С другой стороны, фиксированное окно не может быть полностью адаптировано к локальным свойствам сигнала. Для преодоления этого недостатка пользуются вейвлет-преобразованием. Оно дает на высоких частотах лучшее разрешение по времени, а на низких - по частоте. Т.е. для высокочастотной компоненты можно точнее указать ее временную позицию, а для низкочастотной - ее значение частоты. |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Мы уже немого углубляемся (не могу сказать, что отклоняемся
maxim1000
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
любое преобразование не будет преступлением, если мы знаем, как оно меняет спектр умножение сигнала на оконную функцию приведет к тому, что спектр результирующего сигнала будет сверткой спектра исходного сигнала и спектра оконной функции - мы как бы пройдемся фильтром по спектру, а оконные функции выбирают с таким спектром, который дает сглаживающий эффект (большинство из них похожи на гауссовское распределение, спектр которого такой же...) а выхватывание куска сигнала можно опустить, если доопределить оконную функцию нулями по краям (при этом желательно посмотреть, что стало со спектром оконной функции) -------------------- qqq |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |