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

 
 
> fft/ifft для последовательности длиной 768 (=512+256)
PriBoris
сообщение Jul 27 2010, 08:33
Сообщение #1


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

Группа: Участник
Сообщений: 167
Регистрация: 7-10-05
Из: Санкт-Петербург
Пользователь №: 9 352



Какой эффективный алгоритм для длин такого типа (2^n+2^(n-1)) выбрать ?
Вопрос возник при попытке реализации фильтрации с помощью быстрой линейной свёртки. Длина фильтра почти 256 точек, данные поступают в реальном времени блоками по 512.

Сообщение отредактировал PriBoris - Jul 27 2010, 08:49
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
связист
сообщение Jul 27 2010, 09:10
Сообщение #2


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

Группа: Свой
Сообщений: 154
Регистрация: 1-08-08
Из: Санкт-Петербург
Пользователь №: 39 377



Цитата(PriBoris @ Jul 27 2010, 12:33) *
Какой эффективный алгоритм для длин такого типа (2^n+2^(n-1)) выбрать ?
Вопрос возник при попытке реализации фильтрации с помощью быстрой линейной свёртки. Длина фильтра почти 256 точек, данные поступают в реальном времени блоками по 512.


Не совсем понятно что Вы делаете?
Насколько я смог понять (а если я понял не правильно, то поправьте меня), Вы пытаетесь отфильтровать сигнал переведя его в частотную область при помощи БПФ и после фильтрации переведя сигнал из частотной области обратно во временную при помощи обратного БПФ. Для этого Вам необходимо сделать БПФ длиной 768 точек.

Про эффективные алгоритмы лучше всего посмотреть книжку Блейхута "Быстрые алгоритмы цифровой обработки сигналов".
Алгоритм Кули-Тьюки наверное подойдёт для Вашей задачи. Получится табличка 3*256 точек. 3-точечные БПФ делаем по плгоритму Винограда, а 256-точечное БПФ делаем бабочками (Кули-Тьюки по основанию 2).
Или алгоритм Гуда-Томаса тоже подойдёт, но его понять сложнее, поэтому разбираться надо дольше. Там тоже получится табличка 3*256 точек.
Go to the top of the page
 
+Quote Post
PriBoris
сообщение Jul 27 2010, 12:21
Сообщение #3


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

Группа: Участник
Сообщений: 167
Регистрация: 7-10-05
Из: Санкт-Петербург
Пользователь №: 9 352



Цитата(связист)
Про эффективные алгоритмы лучше всего посмотреть книжку Блейхута "Быстрые алгоритмы цифровой обработки сигналов".
Алгоритм Кули-Тьюки наверное подойдёт для Вашей задачи.

Спасибо,с алгоритмом Кули-Тьюки разобрался. В матлабе прокрутил вариант 3*256, всё сходится.

Цитата(DRUID3)
Почти это как? 255.5?

Нет,имелось ввиду,что длина фильтра после различных доработок надфилем получается в районе 210...230.
256 - это я взял с запасом на будущее,округлив до ближайшего красивого (для хранения и использования) числа

Цитата(DRUID3)
делайте по 2-а FFT по 256 точек...
или одно по 512 на блок...
Физический смысл быстрой свертки в том, что у Вашего фильтра есть определенные АЧХ/ФЧХ(которое однозначно связано с его "импульсной"). Мы определяем его и накладываем операцией умножения(свертка-фильтрация над временным рядом соответствует умножению в частотном отображении) на частотный спектр сигнала. Размер блока может быть любым - впринципе, даже меньше длинны фильтра - но тогда его нужно будет пересемплировать с другой частотой Ничего из уже обработанного блока хранить не надо. Это не FIR. А все ускорение за счет того, что переход в частотную область с помощью FFT, посемпловое умножение, и обратный переход уже где-то начиная с 128 точек требует меньше операций чем свертка "в лоб".


Обясните пожалуйста, я не понимаю что я по Вашему мнению планирую делать не так.
Мне нужно реализовать FIR длиной 256, который я собственно реализовал в лоб. Получается затратно по ресурсам.
Я планирую сделать так:
Пришел новый набор данных из 512 точек.
Я создаю буффер их 768 точек, в него в позиции с 1 по 256 я копирую последние 256 точек из предыдущего набора данных, а в позиции с 257 по 768 я копирую свежие 512.
Делаю fft длиной 768.
Домножаю результат на АЧХ/ФЧХ моего фильтра, дополненного нулями до длины 768.
Полученное произведение пропускаю через ifft.
Точки с с 1 по 256 выкидываю, а точки с 257 по 768 считаю результатом фильтрации свежего блока данных.

Лучше делать два таких прохода на блок, но по 512 точек ?
Или один проход, но избыточный, на 1024 точек, чтобы не заморачиваться с Кули-Тьюки (в котором я возможно потреряю много времени на накладных расходах при переиндексации и т.д.)?

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- PriBoris   fft/ifft для последовательности длиной 768 (=512+256)   Jul 27 2010, 08:33
- - Xenia   Цитата(PriBoris @ Jul 27 2010, 12:33) Воп...   Jul 27 2010, 09:03
|- - PriBoris   ЦитатаБыть может здесь было бы проще дополнить мас...   Jul 27 2010, 09:13
|- - DRUID3   Цитата(PriBoris @ Jul 27 2010, 12:13) Да,...   Jul 27 2010, 09:16
|- - DRUID3   Цитата(PriBoris @ Jul 27 2010, 15:21) При...   Jul 27 2010, 12:48
|- - PriBoris   Цитата(DRUID3)Это мегаерундище... Лучше сесть и сп...   Jul 27 2010, 13:02
- - thermit   768 = 3*2^8 последняя стадия по основанию 3, остал...   Jul 27 2010, 09:20
|- - Xenia   Цитата(PriBoris @ Jul 27 2010, 13:13) Да,...   Jul 27 2010, 09:31
|- - связист   Цитата(Xenia @ Jul 27 2010, 13:31) Если в...   Jul 27 2010, 09:43
|- - Xenia   Цитата(связист @ Jul 27 2010, 13:43) Наск...   Jul 27 2010, 09:51
- - bahurin   Цитата(PriBoris @ Jul 27 2010, 12:33) Как...   Jul 27 2010, 10:04
|- - Xenia   Цитата(связист @ Jul 27 2010, 13:43) Каже...   Jul 27 2010, 10:23
||- - bahurin   Цитата(Xenia @ Jul 27 2010, 14:23) А вот ...   Jul 27 2010, 10:46
|||- - Xenia   Цитата(bahurin @ Jul 27 2010, 14:46) 1. в...   Jul 27 2010, 11:35
|||- - DRUID3   Цитата(Xenia @ Jul 27 2010, 14:35) И что ...   Jul 27 2010, 11:57
|||- - bahurin   Цитата(Xenia @ Jul 27 2010, 15:35) Основа...   Jul 27 2010, 12:20
||- - DRUID3   Цитата(Xenia @ Jul 27 2010, 13:23) Попытк...   Jul 27 2010, 11:03
||- - Xenia   Цитата(DRUID3 @ Jul 27 2010, 15:03) P.P.S...   Jul 27 2010, 12:40
||- - DRUID3   Цитата(Xenia @ Jul 27 2010, 15:40) В прин...   Jul 27 2010, 14:25
||- - PriBoris   Второстепенные вопросы остались. Если кто-то может...   Jul 27 2010, 14:45
|- - PriBoris   Цитата(bahurin @ Jul 27 2010, 14:04) Как-...   Jul 27 2010, 10:39
- - thermit   ЦитатаPriBoris: Обясните пожалуйста, я не понимаю ...   Jul 27 2010, 12:50
- - thermit   ЦитатаDRUID3: Лучше сесть и спокойно разобраться -...   Jul 27 2010, 13:16
- - thermit   Никаких 512-и быть тут не может, т к результат све...   Jul 27 2010, 20:06
|- - PriBoris   Цитата(thermit)Никаких 512-и быть тут не может, т ...   Jul 28 2010, 09:49
|- - DRUID3   Цитата(thermit @ Jul 27 2010, 23:06) Ника...   Jul 28 2010, 11:56
- - thermit   ЦитатаDRUID3: Согласно самому определению свертки ...   Jul 29 2010, 11:52
|- - bahurin   Цитата(thermit @ Jul 29 2010, 15:52) КИХ ...   Jul 30 2010, 05:44
- - ivan219   А какого размера относительно длинны массива должн...   Jul 30 2010, 08:11
- - thermit   Длине импульсной характеристики без 1. Цитатаbahu...   Jul 30 2010, 08:21


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

 


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


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