|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Dmitriy Yaroshevich 2:4635/1024.312 02 Feb 2003 04:48:38 To : Zahar Kiselev Subject : нулевые значения функции --------------------------------------------------------------------------------
Суббота 01 Февраль 2003, Zahar Kiselev wrote to All:
ZK> Hello All!
ZK> Есть оцифрованный сигнал.
ZK> Форма - что-то типа сильно ограниченной и слегка зашумленной синусоиды.
уровень шума сравним с уровнем сигнала?
Если нет то и проблем нет.
ZK> Или так может выглядеть прямоугольный меандр с сильно заваленными
ZK> фронтами
ZK> и тоже добавлением шума. Hа один период сигнала есть штук пять-семь
^^^^^^^^
ну если 5-7 для любой частоты(т.е. и макс. тоже)то точек ты взял достаточно.
Для того метода, который я тебе предложу 5 - граничное значение, а значит надо
больше.(6-7. Зависит от уровня помех и скорости изменения сигнала около нуля)
ZK> измеренных точек в зависимости от частоты сигнала в этот момент. По
ZK> этой
ZK> информации требуется вычислить моменты перехода сигнала через ноль.
ZK> Почитал в справочинике про интерполяцию - там везде рассматривается задача
ZK> нахождения значения функции в какой-то точке исходя из известных значений
ZK> в других точках. То есть ищут "Y" при каком-то заданном "X". А как
ZK> "выернуть наоборот" эту формулу, чтобы она давала значение Х такое,
^^^^^^^^^^^^^^^^^^ думаю тебя это не спасет.
ZK> которое будет соответствовать Y=0 ? Сколько соседних точек имеет
ZK> смысл
ZK> использовать для вычисления при вышеупомянутой форме сигнала?
Hам надо 3 точки(ни больше ни меньше)(с учетом обязательно больше 5-и точек на
минимальный период, т.е. Fd>5*FMaxSignal, а лучше 7).Одна(средняя) в случае
того, если одна из точек будет попадать в окрестности нуля и может быть изменена
шумом на пропивоположную полярность.
Ты проверяешь через одну точку(потому что смешение может сработать как в одну,
так и в другую сторону) на то - что она 0 по её соседям.Если у соседей знаки
разные, значит текущяя обрабатываемая точка - близка к нулю.Можеш её и взять, а
можеш попытаться немного точнее:
Т*|Y(X[i])|
Х0=X[i]+------------------------- *sign(Y(X[i])*Y(X[i-1]))
(|Y(X[i+1])|+|Y(X[i])|)
если sign(Y(X(i-1)))!=sign(Y(X(i+1)))
Может где малехо провтыкал - но смысл где-то там.
Алгоритм сочинял по ходу дела:), но ты попробуй,недолго.
Расписывать мысль лень.
ZK> В идеале хотелось бы написать функцию, которая на входе берет массив,
ZK> в
ZK> котором несколько значений сигнала, а на выходе выдает массив значений
ZK> времени, когда сигнал переходит через ноль или же этот массив не содержит
ZK> ничего если функция считает, что сигнал через ноль ни разу не переходил.
ZK> Значения времени предполагаются дробными, так как переход через ноль в
ZK> общем случае не будет совпадать с моментом измерения.
Если я правельно понимаю тебе это надо для частотного демодулирования(т.е. по
расположении нулей можно востановить исходный сигнал)
или для цифры прямо в линии(что не есть гоод, сам знаешь).
Есть у нас препод(старый но продвинутый нормально).
Много интересного говорит, но иногда не все понятно.
Он занимался когда-то этим.
Говорит что возможно решение проблемы лежит в разложении функции рядом
sin(x)*sin(2x)*sin(3x)*...*sin(nx).
Я про такое разложение не слышал и суть его не догоняю.Если интересно -покопай.
Так вот говорит что очень часто проблемы с каналом связаны больше не с самим
каналом а с апаратурой приема\передачи(хотя это и не афишируеться)
(в частности с АРУ (автоматичемким регулятором уровня)).
Хотя мы и используем частотную модуляцию, но принимаем и обрабатываем сигнал по
амплитуде, и этот АРУ всю картину и колбасит когда параметры канала динамически
меняються. Т.е. при использавонии твоего подхода эта проблема отпадает, но я не
знаю реализовано это или нет.
ЗЫ Крутой препод говорит что нет.
Всего наилучшего тебе, Zahar!
Dmitriy
--- GoldED+/W32 1.1.4.7
* Origin: (2:4635/1024.312)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/52273e3c89f6.html, оценка из 5, голосов 10
|