Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подскажите по алгоритму pls нужно
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Make_Pic
У меня две частоты в сигнале, точно известно частота разделения - 1кГц, шумы на уровне - 60дБ, могу ли я на AVR или MSP430 сделать ФНЧ и ФВЧ на 1кГц с завалом ~50дБ на октаву? Какие цифр. фильтры применить, чтобы справился МК? И можно и как после обработки фильтром определить период сигнала?

Хотелось на уровне алгоритма взглянуть на это дело.
Stanislav
Цитата(Make_Pic @ Jul 18 2005, 08:22)
У меня две частоты в сигнале, точно известно частота разделения - 1кГц, шумы на уровне - 60дБ, могу ли я на AVR или MSP430 сделать ФНЧ и ФВЧ на 1кГц с завалом ~50дБ на октаву? Какие цифр. фильтры применить, чтобы справился МК? И можно и как после обработки фильтром определить период сигнала?

Хотелось на уровне алгоритма взглянуть на это дело.
*

Пожалуйста, уточните задачу.
1. Какой именно вид сигнала имеет место быть.
2. Какое подавление мешающего сигнала Вам нужно.

Это я к тому, что подавить мешающую частоту можно постым режектором, но, боюсь, что Вас это не устроит.
Make_Pic
Цитата(Stanislav @ Jul 18 2005, 15:39)
Пожалуйста, уточните задачу.
1. Какой именно вид сигнала имеет место быть.
2. Какое подавление мешающего сигнала Вам нужно.

Это я к тому, что подавить мешающую частоту можно постым режектором, но, боюсь, что Вас это не устроит.
*


Неоходимо разделить и измерить две частоты (c точностью до 1 Гц) которые находятся ниже и выше 1000Гц ( ряд частот такой: 700 и далее через 200 Гц до 1700) и измерить их уровни от -25дБ до +2дБ
Stanislav
Цитата(Make_Pic @ Jul 18 2005, 18:14)
Неоходимо разделить и измерить две частоты (c точностью до 1 Гц) которые находятся ниже и выше 1000Гц  ( ряд частот такой: 700 и далее через 200 Гц до 1700) и измерить их уровни от -25дБ до +2дБ
*


Выделить их можно простыми полосовыми БИХ - фильтрами второго порядка (рассчитать проще всего в матлабе. Единственное, на что нужно обратить внимание - точность представления коэффициентов и точность вычислений, иначе фильтры могут стать неустойчивыми. Для измерения амплитуды можно использовать прямые методы (корень из мощности) и "продвинутые", например, построением специального фильтров, какие используются при декодировании DTMF сигнала. Частоту же при таком большом отношении С/Ш проще всего измерить методами, аналогичными тем, которые применяются в частотомерах. Если требуются более быстрые или более устойчивые к шумам решения, пишите, подумаем вместе.
P.S. Почитайте литературу по цифровому декодированию DTMF, там есть ответы на все Ваши вопросы.
Altair
Вот проект в Матлабе для DTMF декодера по алгоритму Эванса

http://aly.projektas.lt/Projects/MATLAB/DT...coderEvanse.htm
Make_Pic
Цитата(Stanislav @ Jul 18 2005, 19:41)
Выделить их можно простыми полосовыми БИХ - фильтрами второго порядка (рассчитать проще всего в матлабе. Единственное, на что нужно обратить внимание - точность представления коэффициентов и точность вычислений, иначе фильтры могут стать неустойчивыми. Для измерения амплитуды можно использовать прямые методы (корень из мощности) и "продвинутые", например, построением специального фильтров, какие используются при декодировании DTMF сигнала. Частоту же при таком большом отношении С/Ш проще всего измерить методами, аналогичными тем, которые применяются в частотомерах. Если требуются более быстрые или более устойчивые к шумам решения, пишите, подумаем вместе.
P.S. Почитайте литературу по цифровому декодированию DTMF, там есть ответы на все Ваши вопросы.
*


Спасибо за ответ. По декодированию DTMF я чуток разбираюсь.

Еще такой вопрос: допустим я обработал входной синал по алгоритму Гертцеля, тобишь пропустил через шесть полосовых DFT входной сигнал, как лучше из отфильтрованных массивов определить частоту с точностью до герца, да и возможно такое?
Stanislav
Цитата(Make_Pic @ Jul 19 2005, 09:09)
Спасибо за ответ. По декодированию DTMF я чуток разбираюсь.

Еще такой вопрос: допустим я обработал входной синал по алгоритму Гертцеля, тобишь пропустил через шесть полосовых DFT входной сигнал, как лучше из отфильтрованных  массивов определить частоту с точностью до герца, да и возможно такое?
*


Алгоритм Goertzel'я подразумевает применение не фильтров непрерывного действия, а "сбрасываемых" фильтров. В фазе накопления он только "всасывает" входные данные заданное число отсчетов. Затем, путем несложного преобразования, находится амплитуда сигнала в фильтре, т.е, выходом его является одно-единственное число. После этого память фильтра должна быть сброшена в 0, т.к. колебания в фильтре теоретически могут нарастать до бесконечности, а реально - до переполнения. Если мне не изменяет память, получить информацию о частоте сигнала в данном фильтре невозможно (мешает неоднозначность).
В свое время для быстрого и точного определения частотного сдвига я использовал следующий "радиотехнический" способ, основанный на том, что фазовый сдвиг резонатора второго порядка на центральной частоте равен точно 90 град. Итак:
1. Берем фильтры, как у Goertzel'я, обеспечив их устойчивость путем уножения коэффициентов A1 и A2 на X и X^2 соответственно, где X - близкая, но меньше 1 величина (0,95-0,98).
2. Обрабатываем сигнал таким фильтром 2 раза, получаем 2 выходных последовательности, после первой и второй фильтрации.
3. Перемножаем их и фильтруем результат с помощью ФНЧ.
4. Все!!! Число в ФНЧ пропорционально сдвигу частоты (точнее, его синусу).
Предлагаю перед реализацией этого способа все тщательно отмоделировать, т.к. есть небольшие нюансы, с которыми Вам самому будет приятно разделаться. Сделаю только подсказку, что точная оценка частоты будет только в установившемся режиме работы фильтров.
Sokol
Цитата(Make_Pic @ Jul 19 2005, 09:09)
Еще такой вопрос: допустим я обработал входной синал по алгоритму Гертцеля, тобишь пропустил через шесть полосовых DFT входной сигнал, как лучше из отфильтрованных  массивов определить частоту с точностью до герца, да и возможно такое?
*


Герцелем Вы определяете амплитуду сигнала определенной частоты в спектре входной реализации. Если искомые сигналы имеют очень малую погрешность по частоте, то можно обойтись и одним преобразованием Герцеля, соответствующим частоте сигнала. Накапливаете 1 сек., и вычисляете с точностью до 1 Гц.
Хотя можно обойтись и меньшим отрезком времени, но делать для каждой частоты не одно вычисление, а хотя бы три.
Stanislav
Цитата(Sokol @ Jul 20 2005, 15:14)
Герцелем Вы определяете амплитуду сигнала определенной частоты в спектре входной реализации.  Если искомые сигналы имеют очень малую погрешность по частоте, то можно обойтись и одним преобразованием Герцеля, соответствующим частоте сигнала. Накапливаете 1 сек., и вычисляете с точностью до 1 Гц.
Хотя можно обойтись и меньшим отрезком времени, но делать для каждой частоты не одно вычисление, а хотя бы три.
*


Извините, если ошибаюсь, но здесь, скорей всего, стоит задача оценки параметров сигналов аппаратуры АОН, а длительность ее двухчастотных посылок существенно меньше 1 сек. Еще: все-таки, как боротьться с неоднозначностью? К примеру, как отличить в Вашем примере сдвиг частоты в 0Гц от сдвига в 1Гц? В то же время, способ, предлагаемый мной, даст при таком отношении С/Ш точную оценку сдвига частоты за время ~10мс с высоким (сотые доли герца) разрешением.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.