![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - Выбор значения многозначной функции |
|
|
Теория - Выбор значения многозначной функции
|
Ветеран Сообщения: 1384 |
Здравствуйте.
Существует ИК дальномер SHARP, который можно подключить к ЦАП и в зависимости от расстояния до объекта будет изменяться напряжение на выходе дальномера. Зависимость напряжения не только нелинейная, но и с "крохотным" изъяном : ![]() Отградуировав свой дальномер я получил похожую зависимость и пока у меня нет предположений как можно грамотно обработать получаемые данные. К примеру получив на выходе 1 Вольт, по графику видно что функция имеет два значения расстояния: 5 см и 65 см. Как вы наверное понимаете препятствие может возникнуть как на 5 так и на 65 сантиметрах. Отслеживать предыдущее значение расстояния по-моему неправильно из-за некоторого количества ошибок самого дальномера. Посоветуйте пожалуйста оптимальный алгоритм для обработки данных. |
|
------- Отправлено: 13:51, 10-07-2012 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать По поводу шаговых двигателей.
FDD. Там червячная передача, да и "платформа" уже имеется. Дальномер на ней закрепить и все. (габаритные размеры последнего не выяснял) |
------- Отправлено: 21:41, 15-07-2012 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Beyound, Дисперсия превышена в sqrt(999) раз - просто в формуле ошиблись. И с расстоянием может не расти, если это шум самого датчика или усилителя (пытаемся это выяснить). Если будет расти - это то, что нужно. Изначально по дисперсии планировалось отделить область до и после пика при замере дальности.
Цитата lxa85:
|
|
Отправлено: 23:33, 15-07-2012 | #22 |
Ветеран Сообщения: 1384
|
Профиль | Отправить PM | Цитировать Цитата pva:
Цитата pva:
|
||
------- Отправлено: 11:11, 16-07-2012 | #23 |
Ветеран Сообщения: 1384
|
Профиль | Отправить PM | Цитировать Цитата pva:
|
|
------- Отправлено: 11:14, 16-07-2012 | #24 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Цитата Tonny_Bennet:
В общем, немного понятно, почему так прыгает дисперсия. При удалении от пика в низким напряждениям начинается совсем не гауссово поведение. 1. В сигнале присуствует независимая от расстояния периодическая помеха (возможно напряжение питания, но частота слишком низкая, около 20 Гц. Её можно увидеть по повторяющимся пикам на частотной диаграмме. 2. В области низких напряжений (см. quant.png) есть "дыры" (2 шт), в которые не попадают значения. Причём её форма зависит от дальности. Нужно посмотреть, как они ведут себя на разных расстояниях - возможно это тот фактор, который мы ищем. Ещё интересно, что происходит с областью низких напряжений при переходе через пик среднего значения напряжения при приближении к препятствию. Рекомендации будут такие: 1. определять расстояние не по среднему, а по моде (это точка, где максимальное значение плотности вероятности). 2. Пройтись по всему диапазону, можно снимать по 500 точек, и посмотреть, как ведёт себя область ниже моды. Должно быть хорошо видно на графике плотности (как bitmap.png), квантилей (quant.png), поведение периодической помехи может покажет фурье (fourier.png) или автокореляция (autocorr.png). у меня почему-то плотность распределния получилась гораздо симметричней, чем у тебя. Ты накладывал преобразование на данные? |
|
Отправлено: 16:56, 16-07-2012 | #25 |
Ветеран Сообщения: 1384
|
Профиль | Отправить PM | Цитировать Цитата pva:
Цитата pva:
|
||
------- Отправлено: 10:19, 17-07-2012 | #26 |
Ветеран Сообщения: 1384
|
Профиль | Отправить PM | Цитировать Цитата pva:
|
|
------- Отправлено: 10:36, 17-07-2012 | #27 |
Ветеран Сообщения: 1384
|
Профиль | Отправить PM | Цитировать Столкнулся с проблемой.
Есть экземпляр ком-порта через который происходит обмен данными с модулем. Если я устанавливаю определённой командой автоопрос линии АЦП с заданной частотой, данные из модуля лезут сами. Добавляю обработчик событий ComPort.DataReceived += new SerialDataReceivedEventHandler(ComPort_DataReceived); в котором разбираю строки, пришедшие из порта и записываю данные в экземпляр некоторого класса Adc. Соответственно все расчёты (расстояния и т.д.) я провожу с экземпляром класса Adc. Что бы реализовать систему расчёта расстояния исходя не из текущего значения а из Цитата pva:
public int Value { get { return _value; } set { _value = value; if (_hist_of_value.Count >= 1000) { var a = _hist_of_value.Dequeue(); } _hist_of_value.Enqueue(value); } } private Queue<int> _hist_of_value = new Queue<int>(1000); public int[] HistValue { get { return _hist_of_value.ToArray(); } } Написал новую процедуру расчёта расстояния. Она должна построить плотность распределения исходя из последних N измерений и найдя максимальное значение, посчитать и вернуть расстояние. Dictionary<int, int> chanals = new Dictionary<int, int>(); for (int i = 0; i < adc.HistValue.Length; i++) { try { chanals[adc.HistValue[i]] += 1; } catch (KeyNotFoundException) { chanals.Add(adc.HistValue[i], 1); } } Подскажите пожалуйста в чём может быть проблема. |
|
------- Последний раз редактировалось Tonny_Bennet, 18-07-2012 в 12:34. Отправлено: 12:26, 18-07-2012 | #28 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Судя по коду ты используешь C#. Я в нём начинающий, могу на общих основаниях сказать что исключение может давать adc.HistValue[i], которую ты оба раза вызываешь.
Предлагаю изменить алгоритм таким образом: 1. Собираем статистику N точек (в обычный int[]) 2. Сортируем по возрастанию (обычный Array.sort<int>()) 3. Теперь задача найти самую длинную "горизонтальную палку" (обычный поиск максимума) Можно с уверенностью утверждать, что распределение унимодально, и что мода достаточно сосредоточенная, поэтому можно смело отбрасывать "палки" короче какого-то заранее заданного процента от N (надо подобрать на глаз). Этих палок скорее всего не больше 2-х. Можно даже сделать сглаживание: расположить между этими палками, согласно отношению их длин. |
Отправлено: 22:02, 18-07-2012 | #29 |
Ветеран Сообщения: 1384
|
Профиль | Отправить PM | Цитировать Цитата pva:
У специалистов бы проконсультироваться... Цитата pva:
|
||
------- Отправлено: 00:00, 19-07-2012 | #30 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] В пункте "выбор столбцов в таблице" не все значения | anivan | Microsoft Windows 2000/XP | 4 | 16-09-2011 12:56 | |
Разное - [решено] Excel 2003 выбор текстового значения или заменить | bygor1412 | Microsoft Office (Word, Excel, Outlook и т.д.) | 2 | 24-10-2010 03:09 | |
C/C++ - Присвоение функции значения | mrcnn | Программирование и базы данных | 4 | 07-11-2008 08:26 | |
Значения параметров | h00ligan | Автоматическая установка Windows 2000/XP/2003 | 1 | 21-06-2005 12:23 | |
Значения абривеатур | Trojn | Хочу все знать | 11 | 21-05-2003 23:58 |
|