Автор |
Сообщение |
|
Дата: 03 Ноя 2010 23:21:05
#
Сложно сказать, про фазу нигде ничего не сказано, а частоты на сигнале правильные
Откуда это видно, что частоты правильные?
|
|
Дата: 03 Ноя 2010 23:31:18
#
Programmist
А что мешает просто щитать накопленный спектр и анализировать его? Нужные частоты известны, все временные соотношения вроде как тоже...
|
Реклама Google
|
|
|
Дата: 03 Ноя 2010 23:42:38 · Поправил: Programmist (04 Ноя 2010 02:07:40)
#
amx
Не знаю, может быть Cool врет.
DEmiurg
Вот это и мешает. Не можем правильно определить частоту. Если врет Cool, тогда я его выброшу (вместе со своими статическими спектрометрами, которые кажут то же, что и он) и куплю SA.
Похожую картину (1184Hz) выдает через раз и мой древний спектрометр http://www.radioscanner.ru/uploader/2010/stester2.rar но он реалтайм и не предназначен для точных измерений.
Вопрос интересный. Где же все-таки ошибка?
Вот сейчас просто взял тот же убитый сигнал: http://www.radioscanner.ru/uploader/2010/corrupted_data.wav и руками в пяти местах, на глазок повернул фазу обратно. Результат - все читается как по маслу. Разве частота изменилась? http://www.radioscanner.ru/uploader/2010/restored_data.wav
P.S. Возникает, конечно, погрешность, но не настолько же, чтобы весь сигнал на помойку. И Cool их видит правильно, частоты эти. Только, похоже, правды мы так и не узнаем. :( |
|
Дата: 04 Ноя 2010 03:44:50
#
Programmist Вопрос интересный. Где же все-таки ошибка? Так и хочется ответить, в ДНК. :) Что ж за тема такая пародийно-грустная?
Давайте с начала. :) Вы говорили, что фаза меняет амплитуду посылок и де это убивает сигнал. Фаза и амплитуда два независимых параметра. Я не знаю услышали вы это, или нет. Но походу нет. Далее, вы упорствуете, что де фаза убивает ДТМФ. Вопрос поставленый так не конкретно, подразумевает словоблудие. В конце концов вы ложите сигналик убитый фазой. Вопрос становится очень конкретным, вот сигналик, там бла-бла. Ну и тут уж очень интересно мне как бы стало, до каких ужасов дойдёт вобще всё это. До правды мы так и не узнаем. :( как выясняется.
На самом деле, двое сказали, если кого забыл, пардоне, лень перечитвать ветку, но кто ж тут в диспутах кого слушает? DEmiurg сказал, фаза производная частоты, будет выброс. Я сказал, фазу по жизни так не кидает как вы её накидали. Об стену горох, что называется. :) Ну и ладно.
Тоска в глазах, сигналик не читается. Ложу скрин, где частоты кривые. Тут бы и задуматся. Ан нет. Ну ладно. Убрали вы скачки, всё читается! Ну тут-то можно мозг включить? Разве частота изменилась? Спрашиваете вы. Нет, конечно нет, это просто чудо. :) Ну, а как иначе? Есть другие варианты разве?
Что до правды, "которую мы так и не узнаем", чего её узнавать, она никуда не пряталась эта правда, и расписана во всех учебниках, где идёт речь о манипуляции и боковых.
Можно узнать, чего ради вы раздробили посылку на трое скачками по 180? Почему не на 10 частей? Было б ещё интересней. Можно узнать, вы представляете себе канал, где фазу непрерывно колбасит на 180 с мнговенным переходом и частотой 50-80 герц? Как по вашему это нормальный рабочий канал? В нём непременно должно работать ДТМФ безошибочно? Вобще когда заикнулись о фазе, мне и в голову не могло прийти такое абсурдно-утрированное представления о фазовых искажениях в канале. Крутит конечно фазу и на 180, но не мгновенно и не так паралитически.
Вобще способность довести простейшие вопросы до абсурда, блукание в амплитудах, фазах и частотах, непонимание что за чем следует и на что влияет и как, конвчно просто производят гнетущее впечатление. Я это не к тому, что я тут такой умняка, а к тому что всё это написано в учебниках, тайны ни какой не представляет, и уж практику програмеру по ЦОС должно быть известно.
Мрак конечно. :)
|
|
Дата: 04 Ноя 2010 04:36:28 · Поправил: Programmist (04 Ноя 2010 04:39:54)
#
Mesh
Сигнал, конечно был на гране распознаваемости (40 мсек). Ну, крутанул я его, наверно чересчур, извините. Все было к тому, что фазовые искажения все-таки мешают нормальному приему. фаза меняет амплитуду посылок на выходе частотного детектора. Да и бог с ними, там помимо фазы, может и более серьезных помех добавится. А мне при детектировании все-таки лучше рассматривать отдельный импульс, а не всю пачку.
|
|
Дата: 04 Ноя 2010 07:55:05
#
Блин, Programmist, отложите в сторону компилятор и возьмите в руки вузовский учебник по курсу "Радиотехнические цепи и сигналы".
Вы манипулируете сигнал по фазе, и что получаете - правильно, две боковые полосы с подавленной несущей. И Cool Edit это показывает, и TrueTTY:
В результате вместо каждой из DTMF-частот вы получаете две частоты, но уже другие. |
|
Дата: 04 Ноя 2010 08:32:29
#
amx
Вот так все понятно. Сигнал полностью разрушен разворотом фазы и искать в нем "неиспорченный" кусок, скорее всего никакого смысла нет.
|
|
Дата: 04 Ноя 2010 12:01:48 · Поправил: Mesh (04 Ноя 2010 12:12:50)
#
Programmist Браво! Оказывается если по табуретке ударить со всей дури три раза топором, табуретка разлетается в щепки! Кто бы мог подумать? Грандиозное открытие на шестой странице тёрок. Если вы, это наше будущее, то страна реально в опасности. Всё таки мне кажется ошибка где-то в двойной спирали. Что-то тут не так. Все было к тому, что фазовые искажения все-таки мешают нормальному приему. Нет, всё идёт к тому, что ламеры програмеры ушатают любой сигналик в дым, и будут делать круглые глаза, и "нобелевские открытия", типа если наливать много воды в стакан, то она перельётся через край. К сожалению вы не понимаете, что такое фазовые искажения, и что такое фазовая манипуляция. А может оно и к лучшему. К стати вы б с имиторавали б лучше реальные фазовые искажения, да убедились бы что они на ДТМФ не влияют. Но походу эта задача не выполнима для вас. Максимум что вы можете, это покрошить сигнал Кулом в щепки и пребывать в уверености что ДТМФ чувствительно к фазе, в то время как это вовсе не так. Но, имхо, это очередной горох об стену. :).
|
|
Дата: 04 Ноя 2010 15:07:25 · Поправил: Programmist (04 Ноя 2010 16:38:51)
#
Mesh
За будущее не беспокойтесь, я скорее это прошлое и делаю все только ради спортивного интереса. А если что сразу и не выходит, исправляю. И причем здесь спирали и табуретки? Не можете нормально объяснить – лучше не надо. В пустую потраченное время, а жаль.
Файл с сервера удален т.к. алгоритм был не правильный.
|
|
Дата: 04 Ноя 2010 17:37:40
#
Programmist Имхо файл вы зря удалили, завтра прийдёт такой ж как вы и будет делать те ж самые глупости. И посмотреть ему будет негде где он косячит или где косячили другие. А вот это Не можете нормально объяснить – лучше не надо Я вам верну, потому что это уже поиски виновных в собственных проблемах. Не можете нормально написать что-то в ЦОС - лучше и не надо. Нашли мне на что обижатся, что де на так вам тут обьяснили чего-то. При всё при том, что вам рахжевали, в рот положили, и проглотить заставили. Слегка вы не туда палку гнёте в своих обидах. А так да, реально я вам тут ничего не должен рассказываь, это принимается, впредь не буду. :)
|
|
Дата: 04 Ноя 2010 18:06:49
#
А можно и я как новичек поучаствую?
Что, если под каждый тон сделать КИХ фильтр, а потом усреднять по амплитуде за определенный период(если это надо). Работать будет? Наверное, это называется фильтровый метод.
Ради интереса открыл мануал по аппаратному декодеру - первое что попалось MT8870.
Блок схема
Увеличить
На ней мы видим что сигнал проходит через фильтр, который разделяет его на две части.
Фильтр верхней и нижней группы. Потом идет вообще детектор прохода через 0.
Дальше идет английский язык. Но я так понимаю, что тут просто паузы будут считаться между моментами, когда синус через 0 проходит, что весьма не точно, а у нас тут FFT и все такое...
А вот, кстати и АЧХ самого фильтра:
Увеличить |
|
Дата: 04 Ноя 2010 18:20:20 · Поправил: xman (04 Ноя 2010 18:22:34)
#
Mesh Даже перечитав однк только эту страницу, у меня стойкое ощущение что если бы из ваших постов убрать сарказм - получилась бы хорошая техническая дискуссия специалистов. Ведь из-за несостыковок на эмоциях столько перспективных проектов дохнут... Эта программа, по крайней мере с моей пользовательской точки зрения, лучшая из из имеющихся доступных декодеров DTMF. Причем я рассматриваю не только с позиции совершенства алгоритма, но и интерфейс имеет не меньшее значение. Можно конечно рассуждать что запихнуть хороший алгоритм в оболочку - не проблема. Но ведь до сих пор этого не было, а тут человек взял и сделал! Видимо у тех кто умеет "нормально написать что-то в ЦОС" - до такого вот элементарного запихивания в оболочку их шедевра алгоритмической мысли, руки так до сих пор и не дошли... К тому же, специалистами не рождаются, а тут налицо желание автора вникнуть в суть дела, и доводя до ума проект, развиваться и самому. Так что утверждение "лучше не надо" - весьма и весьма спорное...
Programmist Хотя и сам немного пишу для микрочипов, все же позволю себе абсолютно ламерски, но отчистого сердца сказать что в данном случае мне все равно, правильный там алгоритм или нет, лишь бы работал :) А прога работает - это факт :)
|
|
Дата: 04 Ноя 2010 18:23:49 · Поправил: 9CXX (04 Ноя 2010 18:24:47)
#
Да оставьте вы впокое товарища Programmist. Как все местные уже давно знают, он не сигнальщик и не мететматик. Он просто программист. Он пишет код, никого не слушает, отрицает действительность, не вникает в чужие наработки, винит в ошибках чужой софт и так далее.
Вроде как пишет для себя - по крайней мере, так говорит. Но при этом зачем-то выкладывает софт и исходники в веб. Противоречие получается, но не всего его видят.
Я тоже немного программист. Я учился этому в школе с 5 по 11 классы, в институте, дома, на подработках, после работы и так далее. Но, увы, не стал талантливым и грамотным программистом. Оттого и не пытаюсь заниматься этим сейчас и уж тем более, выкладывать разработки в Интернет. Ведь там сотни куда более продвинутых программистов. У которых все получилось. Так зачем же мне лезть в эту кашу? Поэтому я и не лезу. И ничего никуда не выкладываю. Я смирился с тем, что я не программист. Но не все готовы это сделать.
|
|
Дата: 04 Ноя 2010 18:49:20
#
xman Насчёт сарказма. :) Я вам так скажу, сарказм не берётся из неоткуда. Он появляется тогда, когда оппонент демострирует глупейшее упорство. Когда спрашивают почему вы сделали так или так, а в ответ или несуразнове мычание или ещё лучше полный игнор вопросов и гнутие своего. Это не дискусия специалстов. это попытки специалиство уломать кое кого на глотание прописных истин, так вель ещё и лицо отваричвают, типо не вкусно. :) Специалистами не рождаются да, ими становятся. Но я помню Ваську это год назад где-то мулька была, и читаю эти потуги сейчас, и как вы думаете, прогресс есть? :) Я уже писал как-то, на проблема если вы где-то ошибаетесь или чего не знаете, я много чего не знаю, проблема как вы это решаете. Если становетесь в позу, не так разссказали, не так присели, сарказма много, формулы большие пятиэтажные, то и всё. Ну а эмоции извините, репититора нанимать тогда надо и ему условия выдвигать как он должен кого натаскивать. Реально у меня обидетть никого целей никогда нет, пока, мне не начнуть советы дебильные давать, чего мне, делать как, и с какими поклонами, вот тут извините. Прежде чем мне тут вменять в вину фразу "лучше не надо", найдите её появление и осмыслите. :) Ну и к стати не будет сарказма, ничего не будет с моей стороны, вопрос то уже решился. :)
sea Зеро кроссинг, это очень древний и к стати относительно не плохо работающий алгоритм, его премиущество только в дешевизне, собственно ни каких АЦП не надо по современным меркам. Но реально в условиях помех он будет проигрывать боле продвинутым решениям.
|
|
Дата: 04 Ноя 2010 19:08:50 · Поправил: sea (04 Ноя 2010 19:09:36)
#
Mesh
Зеро кроссинг, это очень древний и к стати относительно не плохо работающий алгоритм, его премиущество только в дешевизне, собственно ни каких АЦП не надо по современным меркам. Но реально в условиях помех он будет проигрывать боле продвинутым решениям.
Выводы о его несовершенстве я основываю на своем очень скромном опыте в этой области. Был пример пакетного ретранслятора, который принимал как раз таким способом. Для скорости 300 или 1200, наверное это не лучшее решение. Реально собравшие устройство, подтвердили, что оно "тупое на прием".
Касательно DTMF может решение и нормальное. Чтобы решить - надо знать какой минимальный период одной цифры (чтобы знать, сколько раз через 0 пройдет). Тогда уже и о точности можно будет думать.
Кстати, вот еще вопрос: как это классически реализуется? Просто считаются переходы через 0 за период, а потом вычисляется частота? Что делать с ВЧ помехой, которая заставит перейти через 0 за которкий промежуток времени?
|
|
Дата: 04 Ноя 2010 19:21:16
#
sea Да. так и делается. Вычисляется период переходов и из него частота. ВЧ помеха вне полосы быть не может, она режется фильтрами, должна по крайней мере. А внутриполосные помехи как раз и будут рассеивать переходы, сбивая частоту. Но тут тож есть ходы, там интегрирование, то бишь усреднение, блоковая обработка с поледующей опять же интеграцией и всё такое. Весь АЦП в таких алогритмах это компаратор или триггер Шмитта. Очено популярныые решения 70-80 годов, так ведь и работало ж оно при том. При всём при этом отлично было известно, что нормал ЦОС обработка заведомо лучше, но не было таких мощностей доступных для вычислений как сейчас.
|
|
Дата: 04 Ноя 2010 19:43:06
#
Берёте рацию DR-135 (435) с модулем F 050, ставите её на приём, с любой другой станции выпуливаете DTMF-сигнал или его запись, В это время напринимающей станции 135-ой (435-ой) на дисплее высвечивается цифровая комбинация посланного DTMF-сигнала...
|
|
Дата: 04 Ноя 2010 19:46:48 · Поправил: sea (04 Ноя 2010 19:47:43)
#
А внутриполосные помехи как раз и будут рассеивать переходы, сбивая частоту.
Ага. Я их и имел в виду.
Хм. Но ведь тут на ум приходит как минимум пара вариантов:
1. Детектировать период символа, и пока он нажат - увеличивать сумму при каждом переходе через 0. После того, как символ закончился - делим сумму на период в секундах. Получается частота.
2. Детектировать период символа. При каждом переходе через 0 определять частоту и заносить эту частоту в таблицу частот + 1. Потом та частота, по которой больше насуммировалось - основная. Остальные - помеха в рабочей области частот.
Какой правильный?
Что еще можно учесть? Тут выше писалось про помехоpащищенность DTMF.
-Сигнал должен быть и в верхней и в нижней группе одновременно.
-В каждой группе должен быть только один сигнал.
Что еще? Наверняка у микросхемы еще какие-то стробы есть, по какой-то логике.
А вообще метод подсчета для данной темы может быть интересен тем, что можно не равняться на жестко заданные частоты, а задать интервалы: если вычисленная частота 1000 Гц - 1272.5 Гц то это Е; если 1272.5 - 1406.5 это F и т. д.
|
|
Дата: 04 Ноя 2010 20:19:25
#
sea Не, по ньюансам конкретных решений я мало могу чего сказать. Это уже маленькие НИР нужно проводить. Думки думками, реал рабочие вещи это другое.
|
|
Дата: 04 Ноя 2010 20:20:57 · Поправил: Programmist (05 Ноя 2010 06:36:56)
#
|
|
Дата: 04 Ноя 2010 20:49:21
#
Вот, Mesh, смотрите и никогда так не делайте:
Надо еще добавить возможность соединения с этой программой через TCP порт,
для связи с другими программами.
|
|
Дата: 04 Ноя 2010 21:04:57
#
sea
Конечно можно, но надо довести сначала то, что есть до ума. Сделана только половина работы. Возможно, у Вас получится. Мне как видно, не судьба.
|
|
Дата: 04 Ноя 2010 21:13:57
#
Да я вот уже не первый год думаю начать работать с ЦОС, но знаний не хватает.
|
|
Дата: 04 Ноя 2010 22:05:07 · Поправил: Programmist (05 Ноя 2010 08:16:23)
#
sea
Да, дело не совсем простое и ошибки дорогого стоят, но при желании разобраться можно. Не боги горшки обжигают. :)
Испорченные сигналы есть способ восстановить, причем он работает, но все далеко не однозначно.
знать какой минимальный период одной цифры - упрощает задачу, универсальность нужна не всегда.
не равняться на жестко заданные частоты - не получится, будет очень много ложных срабатываний при наличии помех. При большой длительности импульсов и максимальной точности определения частот можно попасть на кривой дискрет звуковухи.
В исходнике, что выше нужно делать постобработку сигнала. Точность определения намного увеличится. Рекомендовать, как основу для чего-то, конечно не могу, здесь путь у каждого должен быть свой, а для проверки многих функций подойдет.
Все это сотни проб и ошибок, но интересно.
|
|
Дата: 05 Ноя 2010 11:37:55
#
Кстати, по поводу точности звуковых карт.
Покупал я себе VIA TREMOR за 300 р. Просто еще одной карты не хватало.
Так вот на ней установлено два кварца:
24.576 / 512 = 48000
22.5792 / 512 = 44100
В настройках драйвера есть выбор 48 или 44. Проверить точность нечем.
|
|
Дата: 05 Ноя 2010 13:33:38
#
Значит, наконец, сделали. Еще бы к ней неплохо драйвер умный, чтобы в настройки не лазить. И различные 3D эффекты должны надежно отключаться, у меня на одной карте это сильно жить мешает. Включаются, иногда самопроизвольно и связи нет.
Точность на такой карте, по идее только от качества кварцев должна зависеть. При необходимости можно их заменить.
|
|
Дата: 05 Ноя 2010 16:03:55
#
Был у меня с ней один прецедент.
Не работал flexnet32 со звуковым драйвером.
Причем одновременно был запущен mix и он все принимал, а flex не декодировал.
Не знаю в чем проблема была, скорее всего в том, что flex дискретизацию не может настраивать.
|
|
Дата: 05 Ноя 2010 16:49:19 · Поправил: Programmist (05 Ноя 2010 17:07:38)
#
Проблема с драйверами Windows всегда была. Каждый в своей программе решает ее как может. Возникает конфликт программ. Если внимательно посмотреть, у меня тоже свое решение. При открытии WavIn всегда открываются два устройства. Одно основное, откуда и берется поток, второе резервное. Закрываются потом соответственно то же оба, по счетчику. Без этого просто не стабильно работает (потеря синхронизации потока при перемещении формы). Если писать на С++, такой фокус не нужен, но там свои нюансы. Кто-то применяет DirectSound, это сложнее.
Очень много самоделок используют некорректные методы доступа к устройству, особенно при переключении дискрета на ходу, нарушая тем самым работу соседних программ. У mix-a такой грешок был замечен.
Хотя, здесь спор кто прав, кто виноват будет похож на спор про частоту, когда все забыли про время, без которого нет ни частоты, ни фазы, ни амплитуды. :)
|
|
Дата: 10 Фев 2011 00:50:41
#
Спектр сигнала инвертирован. Номер 496 385632
|
Реклама Google |
|