|
Обнаружение частоты, Нужно вычеслить наличие 1000Гц |
|
|
|
Nov 25 2008, 23:32
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
А что, вычисление величины гармоники 1000 Гц - это не вычисление коэффициента корреляции сигнала с синусоидой частоты 1000 Гц?
--------------------
ASB
|
|
|
|
|
Nov 25 2008, 23:59
|
Гуру
     
Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802

|
Цитата(SasaVitebsk @ Nov 26 2008, 02:49)  Да всё это звучит грозно, а на деле ... Гигобайты это на ПиСишках, а здесь их нет и сотнями байтов укладываемся. Тут ещё одной информации не хватает - а именно превышение сигнала над фоном. Насколько сигнал чёткий будет? Конечно фильтр перестраевыемый сделать значительно сложнее. Так надо матчасть учить. Что умеет 16-разрядный процессор приблизительно понятно. И сколько времени программер будет уродоваться над всякими БПФ, пока 1000Гц от 2000Гц в идеальном спектре так-сяк программа отличать начнет. А почему все-таки стандартный тональный декодер не годится? При уровне сигнала -6 дБ уверенно обнаруживает. Когда на экране самого сигнала за помехами не видно. За несколько периодов всего. И перестраивается практически одним резистором. Это можно и программно делать. Просто программеры не ищут легких путей в жизни?
|
|
|
|
|
Nov 26 2008, 09:27
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(Microwatt @ Nov 26 2008, 03:59)  Так надо матчасть учить. Что умеет 16-разрядный процессор приблизительно понятно. И сколько времени программер будет уродоваться над всякими БПФ, пока 1000Гц от 2000Гц в идеальном спектре так-сяк программа отличать начнет. А почему все-таки стандартный тональный декодер не годится? При уровне сигнала -6 дБ уверенно обнаруживает. Когда на экране самого сигнала за помехами не видно. За несколько периодов всего. И перестраивается практически одним резистором. Это можно и программно делать. Просто программеры не ищут легких путей в жизни? Да нет, наоборот. Я просто говорю, что этот параметр надо учитывать при выборе алгоритма. А то наши советы бессмысленны. Цифровой фильтр у меня также устойчиво обнаруживал сигнал DTMF на фоне разговора. При этом никогда не подрабатывал во время разговора. И, действительно, обнаруживал сигнал буквально по нескольким периодам. Мы добились качества работы неотличимого от ВЖ18. Точных параметров я вам не скажу, так как там всё несколько сложнее было (сигнал восстанавливался из цифры сначала). У корелятора эти параметры раз в 10 хуже были.
|
|
|
|
|
Nov 26 2008, 14:26
|

Частый гость
 
Группа: Участник
Сообщений: 178
Регистрация: 31-10-06
Из: Яблунець
Пользователь №: 21 821

|
Вот до чего я докотился  . Пока на Delphi для простоты реализации. Кто скажет, похоже на правду?
|
|
|
|
|
Nov 26 2008, 22:52
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Alex_1811) Кто скажет, похоже на правду? Очень похоже. Даже не отличишь  Только свёртку делают с нормированным (еденичным) синусом и косинусом, чтобы C (C:=sqrt(A*A+B*  ) содержало сразу же реальную амплитуду.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 27 2008, 01:05
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(Alex_1811 @ Nov 25 2008, 12:43)  Возникла такая проблема: Имеется Мега8 на вход АЦП которой через усилитель подключен микрофон. Нужно детектировать наличее сигнала определенной частоты (в моем случаи 1000Гц). Опишите сигнал подробнее. Нужна форма его огибающей, уровень относительно помех, длительность,необходимое время обнаружения и т.д. Также нужна статистика помехи и вероятность ложного срабатывания или пропуска. Если это покажется сложным - поймите, что простыми средствами накакую задачу удовлетворительно решить нельзя. Оптимум нужно искать только тогда, когда условия определены по максимуму. Если чего-то не хватает - ищется компромиссное решение. ЗЫ. Для начала, можно попробовать полосовой фильтр конечной длины. Возьмите частоту выборки равной, скажем, 4 кГц, и реализуйте разностное отношение: Y(k)=Y(k-1)+X((k)-X(k-2)-X(k-40)+X(k-42). Это рекурсивный КИХ-фильтр, не содержащий операций умножения, и оптимальный для куска (ко)синусоиды частотой в 1 кГц и длиной в 10 периодов в белом шуме. Y(k) - текущий выходной отсчёт, Y(k-1) - предыдущий выходной отсчёт, X(k) - текущий входной отсчёт и т.д. В реальности всё, конечно, сложнее. В полосе фильтра может оказаться, например, форманта.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 27 2008, 07:38
|

Частый гость
 
Группа: Участник
Сообщений: 178
Регистрация: 31-10-06
Из: Яблунець
Пользователь №: 21 821

|
Цитата(GetSmart @ Nov 27 2008, 02:52)  Только свёртку делают с нормированным (еденичным) синусом и косинусом, чтобы C (C:=sqrt(A*A+B*  ) содержало сразу же реальную амплитуду. Розжуйте пожалуйста белее популярно (доступно для меня). Цитата(Stanislav @ Nov 27 2008, 02:52)  Опишите сигнал подробнее. Нужна форма его огибающей, уровень относительно помех, длительность,необходимое время обнаружения и т.д. Также нужна статистика помехи и вероятность ложного срабатывания или пропуска. Форму сигнала я вам не скажу так как сам не представляю. Но получаем его приблизительно так: 1. Радиопередатчик передает синусоиду 1КГц в эфир. 2. Со стороны радиоприемника стоит мое устройство с подключ. микрофоном к АЦП Мега8. 3. Мне нужно определить есть ли на АЦП сигнал частотою 1КГц.
|
|
|
|
|
Nov 27 2008, 07:51
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Alex_1811) Розжуйте пожалуйста белее популярно (доступно для меня). В конце обоих строк кода лишние умножения на 30. Цитата A:=A+(Signal*sin(cnt*2*Pi*FREQ/512)*30); B:=B+(Signal*cos(cnt*2*Pi*FREQ/512)*30);
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 27 2008, 08:12
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Alex_1811) А от корня квадратного никак избавиться нельзя, для Меги8 напряг. А зачем? Вам нужно задать порог срабатывания каким-нить числом. Задавайте порог сразу квадратом числа и сравнивайте. Выше - значит синусоида присутствует, ниже - отсутствует. Или нужно знать реальную амплитуду? ЗЫ. Корень можно вычислить 3..5 итерациями методом Ньютона.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 27 2008, 08:27
|

Частый гость
 
Группа: Участник
Сообщений: 178
Регистрация: 31-10-06
Из: Яблунець
Пользователь №: 21 821

|
Цитата(GetSmart @ Nov 27 2008, 11:51)  Или нужно знать реальную амплитуду? Для данного проэкта не нужно.
|
|
|
|
|
Nov 27 2008, 08:44
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(Alex_1811 @ Nov 27 2008, 10:38)  Форму сигнала я вам не скажу так как сам не представляю. Но получаем его приблизительно так: 1. Радиопередатчик передает синусоиду 1КГц в эфир. 2. Со стороны радиоприемника стоит мое устройство с подключ. микрофоном к АЦП Мега8. Непонятно что-то. Сталыть, передатчик передаёт синусоиду в эфир. А ловите его Вы микрофоном. Если учесть, что плотность эфира =0, Ваша система работать не должна. Цитата(Alex_1811 @ Nov 27 2008, 10:38)  ...3. Мне нужно определить есть ли на АЦП сигнал частотою 1КГц. Я предлагаю Вам начать с простейших фильтров, на которых можно изучить элементарные свойства цифровой фильтрации, а затем уже двигаться дальше.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|