Цифровой фильтр не искажающий прямоугольный сигнал
Цифровой фильтр не искажающий прямоугольный сигнал
Имеется вот такой сигнал:
Я спрашивал данный вопрос на другом форуме, но так и не нашёл решения. Может тут кто-то не видел этот вопрос и сможет помочь? Я читал очень много статей, но так и не нашёл решения, либо я что-то упускаю...
Если есть какие-то вопросы или непонятности по условию задачи, спрашивайте!
Сигнал приходит на АЦП и состоит из двух сигналов: первый с частотой 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, но использовать его с минимально возможным потреблением.Я спрашивал данный вопрос на другом форуме, но так и не нашёл решения. Может тут кто-то не видел этот вопрос и сможет помочь? Я читал очень много статей, но так и не нашёл решения, либо я что-то упускаю...
Если есть какие-то вопросы или непонятности по условию задачи, спрашивайте!
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Цифровой фильтр не искажающий прямоугольный сигнал
Надо понять зачем нужен фильтр, который ничего не искажает? Что вы им пытаетесь отфильтровать?
Re: Цифровой фильтр не искажающий прямоугольный сигнал
Может я что-то не так объяснил... Это не два разных сигнала на первой картинке, а один, который содержит импульсы на частотах 1кГц и 1.4кГц длительностью 100мкс. Я пытаюсь отделить одни импульсы 1кГц от других 1.4кГц и измерить их амплитуду и длительность, а так же отделить эти импульсы от возможных помех на других частотах, при этом не потеряв значения амплитуды и длительности импульсов на нужных мне частотах.Бахурин Сергей писал(а): ↑13 дек 2019, 20:57Надо понять зачем нужен фильтр, который ничего не искажает? Что вы им пытаетесь отфильтровать?
Может я не прав и тут не нужно использовать цифровые фильтры, но тогда как разделить эти импульсы без фильтра и измерить их частоту и длительность?
Если что-то не понятно, спрашивайте. Я постараюсь объяснить подробнее и понятнее...
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Цифровой фильтр не искажающий прямоугольный сигнал
фильтры вам не помогут. Надо анализировать корреляционные функции принятого сигнала и импульсов 1 и 1.4 кГц. Так будет правильнее мне думается.
Re: Цифровой фильтр не искажающий прямоугольный сигнал
То есть про фильтры можно вообще забыть в решении данной задачи? А можете написать подробнее про корреляционные функции, и как их нужно использовать в решении данной задачи? Извините если я что-то не понимаю, я просто в данной теме не силен, а только пытаюсь работаться...Бахурин Сергей писал(а): ↑13 дек 2019, 23:38фильтры вам не помогут. Надо анализировать корреляционные функции принятого сигнала и импульсов 1 и 1.4 кГц. Так будет правильнее мне думается.
Re: Цифровой фильтр не искажающий прямоугольный сигнал
Может кто посоветует какие-нибудь варианты для решения данной задачи? Какие-либо примеры? Что можно почитать?
- Бахурин Сергей
- Администратор
- Сообщения: 1116
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Цифровой фильтр не искажающий прямоугольный сигнал
Почитайте про корреляционный анализ для начала.
Re: Цифровой фильтр не искажающий прямоугольный сигнал
Я прочитал что нашёл про корреляционный анализ, как я понял нужно анализировать корреляционные функции принятого сигнала и импульсов 1кГц и 1.4кГц как Вы и писали выше, тогда я могу установить сходство одного набора данных с другим. Но я не нашёл не одного примера реализации корреляционного анализа на микроконтроллере (вообще примеров с конкретными сигналами очень мало либо я плохо искал...). Даже не могу понять с чего мне начать, у меня есть непрерывно идущий сигнал с определенной частотой дискретизации, я должен создать массив сигнала 1кГц и 1.4кГц и определить корреляцию между принятым сигналом 1кГц и 1.4кГц? Но как мне это поможет избавиться от шумов которые есть в исходном сигнале? Как я определю амплитуду и длительность нужных мне импульсов на частоте 1кГц и 1.4кГц?
Re: Цифровой фильтр не искажающий прямоугольный сигнал
Есть обсуждение об оценки длительности импульса с шумом.
https://dsp.stackexchange.com/questions ... sian-noise
Границы импульса выделяют по порогу (можно по порогу производной от сигнала).
Найдя границы импульсов, можно определить и все остальные параметры.
https://dsp.stackexchange.com/questions ... sian-noise
Границы импульса выделяют по порогу (можно по порогу производной от сигнала).
Найдя границы импульсов, можно определить и все остальные параметры.
Re: Цифровой фильтр не искажающий прямоугольный сигнал
Большое спасибо за информацию. То есть Вы предлагаете сначала найти границы импульса по какому-то заданному порогу, а потом определить остальные параметры импульсов? А как определить какой частоте принадлежит какой импульс? Как отделить эти импульсы от шума на других частотах, если он будет выше порога? Что делать в те моменты когда импульсы будут частично перекрывать друг друга или полностью накладываться?kaa писал(а): ↑17 дек 2019, 10:44Есть обсуждение об оценки длительности импульса с шумом.
https://dsp.stackexchange.com/questions ... sian-noise
Границы импульса выделяют по порогу (можно по порогу производной от сигнала).
Найдя границы импульсов, можно определить и все остальные параметры.