Цифровой фильтр не искажающий прямоугольный сигнал

Все что касается фильтрации
red15530
Сообщения: 8
Зарегистрирован: 13 дек 2019, 10:56

Цифровой фильтр не искажающий прямоугольный сигнал

Сообщение red15530 »

Имеется вот такой сигнал:
temptest.png
Сигнал приходит на АЦП и состоит из двух сигналов: первый с частотой 1кГц, второй с частотой 1.4кГц. Длительность у обоих импульсов всегда 100мкс и в некоторые моменты времени может изменять на 200мкс на 150-200 импульсов, амплитуда может изменяться. Реально ли при помощи математики сделать цифровой фильтр не искажающий амплитуду и длительность прямоугольного сигнала на выходе? Если я пользуюсь классическим БИХ фильтром не важно какого порядка, при входном прямоугольном импульсе я получаю сглаженный прямоугольный сигнал совсем с другой амплитудой и длительностью, отличной от исходной. Так же побывал использовать Гребенчатый фильтр, но он тоже не подходит либо я что-то делал не так. Оцифровывал с частотой 100кГц, взял два буфера на 100 и 71(72) отсчета соответственно для частот 1кГц и 1.4кГц и прогоняю через фильтр. При 1кГц сигнал не изменяет амплитуду и длительность, но если подать 2кГц, видно как что-то просачивается. В случае 1.4 КГц это 714 мкс и 710 мкс [71 отсчёт по 10 мкс] - 0.6% - за 167 периодов [1/0.006] всё размажется полностью. Можно ли как нибудь пропустить сигнал через цифровой фильтр чтобы его амплитуда и длительности не изменилась (практически не изменилась) на выходе? Причем я видел аналогичную систему на простеньком пике и она как-то работает, амплитуда и длительность вделается. Я планирую использовать STM32L4 у которого есть DSP и FPU, но использовать его с минимально возможным потреблением.
Я спрашивал данный вопрос на другом форуме, но так и не нашёл решения. Может тут кто-то не видел этот вопрос и сможет помочь? Я читал очень много статей, но так и не нашёл решения, либо я что-то упускаю...
Если есть какие-то вопросы или непонятности по условию задачи, спрашивайте!

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1056
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Цифровой фильтр не искажающий прямоугольный сигнал

Сообщение Бахурин Сергей »

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

red15530
Сообщения: 8
Зарегистрирован: 13 дек 2019, 10:56

Re: Цифровой фильтр не искажающий прямоугольный сигнал

Сообщение red15530 »

Бахурин Сергей писал(а):
13 дек 2019, 20:57
Надо понять зачем нужен фильтр, который ничего не искажает? Что вы им пытаетесь отфильтровать?
Может я что-то не так объяснил... Это не два разных сигнала на первой картинке, а один, который содержит импульсы на частотах 1кГц и 1.4кГц длительностью 100мкс. Я пытаюсь отделить одни импульсы 1кГц от других 1.4кГц и измерить их амплитуду и длительность, а так же отделить эти импульсы от возможных помех на других частотах, при этом не потеряв значения амплитуды и длительности импульсов на нужных мне частотах.
Может я не прав и тут не нужно использовать цифровые фильтры, но тогда как разделить эти импульсы без фильтра и измерить их частоту и длительность?
Если что-то не понятно, спрашивайте. Я постараюсь объяснить подробнее и понятнее...

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1056
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Цифровой фильтр не искажающий прямоугольный сигнал

Сообщение Бахурин Сергей »

фильтры вам не помогут. Надо анализировать корреляционные функции принятого сигнала и импульсов 1 и 1.4 кГц. Так будет правильнее мне думается.

red15530
Сообщения: 8
Зарегистрирован: 13 дек 2019, 10:56

Re: Цифровой фильтр не искажающий прямоугольный сигнал

Сообщение red15530 »

Бахурин Сергей писал(а):
13 дек 2019, 23:38
фильтры вам не помогут. Надо анализировать корреляционные функции принятого сигнала и импульсов 1 и 1.4 кГц. Так будет правильнее мне думается.
То есть про фильтры можно вообще забыть в решении данной задачи? А можете написать подробнее про корреляционные функции, и как их нужно использовать в решении данной задачи? Извините если я что-то не понимаю, я просто в данной теме не силен, а только пытаюсь работаться...

red15530
Сообщения: 8
Зарегистрирован: 13 дек 2019, 10:56

Re: Цифровой фильтр не искажающий прямоугольный сигнал

Сообщение red15530 »

Может кто посоветует какие-нибудь варианты для решения данной задачи? Какие-либо примеры? Что можно почитать?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1056
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Цифровой фильтр не искажающий прямоугольный сигнал

Сообщение Бахурин Сергей »

Почитайте про корреляционный анализ для начала.

red15530
Сообщения: 8
Зарегистрирован: 13 дек 2019, 10:56

Re: Цифровой фильтр не искажающий прямоугольный сигнал

Сообщение red15530 »

Бахурин Сергей писал(а):
15 дек 2019, 22:52
Почитайте про корреляционный анализ для начала.
Я прочитал что нашёл про корреляционный анализ, как я понял нужно анализировать корреляционные функции принятого сигнала и импульсов 1кГц и 1.4кГц как Вы и писали выше, тогда я могу установить сходство одного набора данных с другим. Но я не нашёл не одного примера реализации корреляционного анализа на микроконтроллере (вообще примеров с конкретными сигналами очень мало либо я плохо искал...). Даже не могу понять с чего мне начать, у меня есть непрерывно идущий сигнал с определенной частотой дискретизации, я должен создать массив сигнала 1кГц и 1.4кГц и определить корреляцию между принятым сигналом 1кГц и 1.4кГц? Но как мне это поможет избавиться от шумов которые есть в исходном сигнале? Как я определю амплитуду и длительность нужных мне импульсов на частоте 1кГц и 1.4кГц?

kaa
Сообщения: 36
Зарегистрирован: 17 мар 2019, 20:03

Re: Цифровой фильтр не искажающий прямоугольный сигнал

Сообщение kaa »

Есть обсуждение об оценки длительности импульса с шумом.

https://dsp.stackexchange.com/questions ... sian-noise

Границы импульса выделяют по порогу (можно по порогу производной от сигнала).
Найдя границы импульсов, можно определить и все остальные параметры.

red15530
Сообщения: 8
Зарегистрирован: 13 дек 2019, 10:56

Re: Цифровой фильтр не искажающий прямоугольный сигнал

Сообщение red15530 »

kaa писал(а):
17 дек 2019, 10:44
Есть обсуждение об оценки длительности импульса с шумом.

https://dsp.stackexchange.com/questions ... sian-noise

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

Ответить