Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: И ещё вопрос про фильтрацию сигнала
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Sergey Semenov
Добрый день,

Есть сигнал :

Нажмите для просмотра прикрепленного файла

Частота дискретизации: Fs= 40000

Сигнал представляет из себя сумму 1Гц тона и полезного акустического сигнала phi(t), что-то типа такого

F(t) = A + B * t + sin(2 * pi * 1 * t) + phi(t)

А и B - константы

Вопрос: как можно отфильтровать исходный сигнал, чтобы выделить акустический сигнал phi(t), который имеет частоту от 20Гц?
В дальнейшем этот сигнал хочется отфильтровать, дицимировать и проанализировать в диапазоне от 20Гц до 2 Кгц.

High-pass-filter c cut-off frequency = 5Hz получился у меня со слишком высоким порядком и будет сложен для реализации. Notch filter получился неудачно, пока не понял почему. В каком направлении вообще нужно идти?

Спасибо!

В приложении сам сигнал длительность 2.8 сек
Нажмите для просмотра прикрепленного файла
thermit
Сначала децимировать, потом фильровать/анализировать.
amaora
Идентифицировать постоянную соствляющую и фазу 1Гц сигнала, в остатке будет phi.
Sergey Semenov
Цитата(amaora @ Feb 19 2014, 21:10) *
Идентифицировать постоянную соствляющую и фазу 1Гц сигнала, в остатке будет phi.

А как? Можете сказать что почитать, куда посмотреть?

Я, к несчастью, очень неопытен в ЦОС.

Как я понимаю, если делать FFT с небольшим числом точек (512) - тогда разрешение будет порядка 40 гц и
этот 1Гц сигнал вылезет на других частотах. А позволить делать FFT с большим числом точек тоже
будет затруднително, я боюсь на финальной платформе не хватит ресурсов
thermit
еще раз:
1 Выполнить понижение частоты дискретизации в 10 раз
2 на чд 4кгц дпф на 512 точек даст разрешение ~8 гц
amaora
Такой сигнал можно оценить рекуррентным фильтром второго или третьего порядка (все таки амплитуда тоже неизвестна?), если перед этим ещё перейти к низкой частоте (~400 Гц), то много вычислительных ресурсов не потребуется. Посмотрите алгоритм Герцеля. Но это мне так привычнее делать как в ТУ.

Можно оценить фазу/амплитуду путем вычисления нужных компонент дпф по какому-то окну взяв сигнал на низкой частоте, синтезировать этот сигнал обратно на требуемой частоте и вычесть из исходного. Это наверно будет больше похоже на ЦОС. Вычислений тоже не много.
ViKo
Вот что получил ВЧ-фильтром Баттерворта 8 порядка на 200 Гц. Когда пробую понизить частоту, увеличить порядок, фильтр ломается, видимо, из-за переполнений.
Sergey Semenov
Цитата(ViKo @ Feb 20 2014, 12:19) *
Вот что получил ВЧ-фильтром Баттерворта 8 порядка на 200 Гц. Когда пробую понизить частоту, увеличить порядок, фильтр ломается, видимо, из-за переполнений.

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

Спасибо всем за ответы! попробую пойти по пути, предложенному thermit.
ViKo
А вот еще вариант. Зеленый - исходный сигнал, фиолетовый - после НЧ фильтра 5 порядка на 80 Гц, синий - разность первого и второго.
Pavia
Внису немного смуты в головы сдешних обитателей.

Sergey Semenov
Как-то странно, что вы боитесь фильтра 8 порядка? Так как это очень низкий порядок для ЦОС. Или вы его в аналоге хотите делать?
А во вторых я не понядл слово "проще" ?

Напоминаю что процесс передескритизации с понижении частоты состоит из 2-х пунктов.
1. Вначале фильтрация.
2. Потом децимация

Если пропустить фильтрацию, то появяться ложные частоты. А.Б.Сергиенко_Цифровая обработка сигналов.djvu стр 231

Отсюда вывод от передескритизаци вы выиграете только при наличии дальнейшей обработки.

amaora
Алгоритм Герцеля имеет недостатки.
1. Узкая полоса. Что годиться только для идеальной синусойды. А в реалии она может плавать +-1Гц. А вот для реальной лучше делать фильтр с полосой в несколько Гц.
2. Для выхода на режим требует несколько периудов скажем так 10, а то точность будет маленькая.

Sergey Semenov
Что касаеться оптимизации, то надо смотреть разные фильтры:
линейный фильтр с КИХ характеристикой, Баттерворта, RC, рекуретный,линейный фильтр с БИХ характеристикой, эллептический.

ViKo
То что у вас преведено в 9 сообщении в ЦОС подобное можно сделать фильтром 2 порядка. Вернее есть фильтр скользящего среднего который реализуеться просто при наличии RAM. Просто запоминаем в суматоре.

r_2=1/(2*r); // константа
цикл по i
S[i]=S*r_2;
S=S+A[i+r]-A[i-r];
i=i+1;
конец цикла
Где r зависит от частоты среза.

А вообще я тоже только начинающий в ЦОС.

AndrewN
QUOTE (Sergey Semenov @ Feb 19 2014, 19:25) *
В приложении сам сигнал длительность 2.8 сек
Нажмите для просмотра прикрепленного файла

Помогите файл прочитать - конвертните в acsii в виде 4-байтовой плав точки или двоичный .mat но не сжатый (data type = 7).
Спасибо!
TSerg
Цитата(Paviaa @ Feb 21 2014, 11:47) *
А вообще я тоже только начинающий в ЦОС.


В таком случае лучше слушать, чем писать, тем более с такими ошибками и не по делу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.