|
Как правильно фильтровать? |
|
|
|
Oct 28 2015, 12:05
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Задача такая - у меня АЦП может работать только на минимальной частоте 1000 Гц. мне нужны кратные частоты: 125, 250 и 500. Получить их можно проведя децимацию, предварительно перед которой отфильтровав все что выше чстоты найквиста. т.е. для получения данных на частоте 500, я запускаю измерения на 1000 Гц, фильтрую все что выше 250 и беру каждый второй отсчет. Не стал заморачиваться с фильтрами - смотрю они уже есть в армовсеом коде (те у кого STM в папке SMSIS) у меня процессор СС3200 - не нашел примеров именно для него, пока взял библиотечку у STM - она подходит к техасу (ф-я void arm_fir_decimate_fast_q31(///)). Есть несколько вопросов, у меня может быть от 1-го канала до 8-ми, вот как их всех одновременно фильтровать? Код, который делает АРМ я так понимаю УЖЕ оптимизирован по скорости, объему и прочему, сокращено количество циклов и всяких MAC операций. как сделать "нормальную" фильтрацию одновременно всех 8-ми каналов, и сколько навскидку времени уйдет на вызов функции фильтрации т.е. переписать саму функцию фильтрации, чтобы использовать только 1 функцию вместо идкущих подряд 8 и что то другое. у кого какие мысли?
|
|
|
|
|
 |
Ответов
|
Oct 28 2015, 13:24
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Цитата(ViKo @ Oct 28 2015, 16:17)  Зачем "одновременно"? Обрабатывайте блоки от каждого канала по-очереди. Блок сделайте равным коэффициенту децимации. После каждого вызова функции получите одну точку результата для одного канала. Чисто теоретически, imho. то есть сначала для первого отсчета, через 32 отсчета для второго, через 64 для третьего? Правильно? насчте синхронной филттрации. у меня не звук, где это было бы допустимо там сейсмоданные и желательно знать когда сигналы к чему относятца. сейчас у меня обычный FIR фильтр, который дает задержку на 32 отсчета, т.е. на 32 миллисекунды. хотелось бы чтобы время, которое я записываю с данными датчиков соответсвовало первому отсчету в пачке. а таким образом (не одновременная фильтрация) время будет соответсвовать только примерно.
|
|
|
|
|
Oct 28 2015, 13:35
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(inventor @ Oct 28 2015, 16:24)  то есть сначала для первого отсчета, через 32 отсчета для второго, через 64 для третьего? Правильно? Функция обрабатывает блоки данных. Ваша задача сформировать эти блоки. Если у вас 8 каналов, распихивайте принятые с АЦП данные по 8-ми массивам (блокам). И вызывайте функцию для обработки каждого из блоков. Я бы сделал входной блок размером с к-т децимации, и как только он заполнен, вызывал бы функцию. Вообще, какая там математика - децимация. Возьмите 2(4, 8) выборки, сложите и поделите на 2 (4, 8).  Цитата(inventor @ Oct 28 2015, 16:24)  сейчас у меня обычный FIR фильтр, который дает задержку на 32 отсчета, т.е. на 32 миллисекунды. хотелось бы чтобы время, которое я записываю с данными датчиков соответсвовало первому отсчету в пачке. Сдвиньте результат на 32 шага назад.
|
|
|
|
Сообщений в этой теме
inventor Как правильно фильтровать? Oct 28 2015, 12:05 TSerg Поставить 8 CPU. Oct 28 2015, 12:52 kovigor Цитата(TSerg @ Oct 28 2015, 15:52) Постав... Oct 28 2015, 12:59  Tarbal Цитата(inventor @ Oct 28 2015, 17:24) то ... Oct 28 2015, 13:28    ViKo Цитата(Tarbal @ Oct 28 2015, 16:58) Децим... Oct 28 2015, 14:05     inventor Цитата(ViKo @ Oct 28 2015, 17:05) Простей... Oct 28 2015, 14:14      ViKo Цитата(inventor @ Oct 28 2015, 17:14) так... Oct 28 2015, 14:23       Tarbal Цитата(ViKo @ Oct 28 2015, 18:23) Конечно... Oct 28 2015, 14:38        ViKo Цитата(Tarbal @ Oct 28 2015, 17:38) Movin... Oct 28 2015, 14:41    TSerg Цитата(Tarbal @ Oct 28 2015, 16:58) Д обы... Oct 28 2015, 14:07  TSerg Цитата(inventor @ Oct 28 2015, 16:24) то ... Oct 28 2015, 13:38 Tarbal Цитата(ViKo @ Oct 28 2015, 17:17) Зачем ... Oct 28 2015, 13:26  kovigor Цитата(Tarbal @ Oct 28 2015, 16:26) Я та... Oct 28 2015, 13:27 Tarbal Если вам не нужно 1000 герцовых измерений, то на в... Oct 28 2015, 13:23 AlexandrY Цитата(inventor @ Oct 28 2015, 14:05) Код... Oct 28 2015, 14:34 SasaVitebsk Цитата(AlexandrY @ Oct 28 2015, 17:34) Не... Oct 29 2015, 06:34 Tarbal Все зависит от задачи. Но надо знать больше о проб... Oct 28 2015, 14:46
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|