=AK= 18 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба Имеется N относительно точных измерений, скажем, в виде чисел с плавающей запятой. Необходимо "округлить" их (или, скажем, представить в виде чисел с фиксированной запятой). "Округление" надо произвести таким образом, чтобы относительное расположение результирующих точек изменилось как можно меньше. Абсолютная погрешность "окрyгления" роли не играет. Например, возьмем 3 значения: 1.4 1.6 3.6 Обычное округление даст результат 1 2 4 Однако если я "округлю" 1.4 до 2, то результат будет 2 2 4 что гораздо точнее, поскольку "расстояние" между точками 1.4 и 1.6 равно всего 0.2, поэтомy их правильнее округлить до одного и того же значения 2, а не до 1 и 2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба Имеется N относительно точных измерений, скажем, в виде чисел с плавающей запятой. Необходимо "округлить" их (или, скажем, представить в виде чисел с фиксированной запятой). "Округление" надо произвести таким образом, чтобы относительное расположение результирующих точек изменилось как можно меньше. Абсолютная погрешность "окрегления" роли не играет. Например, возьмем 3 значения: 1.4 1.6 3.6 Обычное округление даст результат 1 2 4 Однако если я "округлю" 1.4 до 2, то результат будет 2 2 4 что гораздо точнее, поскольку "расстояние" между точками 1.4 и 1.6 равно всего 0.2, поэтоме их правильнее округлить до одного и того же значения 2, а не до 1 и 2. Не очень понятно, что Вы хотите получить... Вот если к Вашему набору (или это последовательность?) добавить в начало(или в конец) еще 1.3, то что Вы желаете иметь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба Вот если к Вашему набору (или это последовательность?) добавить в начало(или в конец) еще 1.3, то что Вы желаете иметь? Тогда бы я "округлил" так 1.3 - 1 1.4 - 1 1.6 - 1 3.6 - 3 1.3 - 1 Примерная аналогия с такой задачей. Представьте, что вы нарисовали на листочке бумаги в клетку какую-то геометрическую фигуру, скажем, треугольник. Теперь надо перерисовать его так, чтобы все вершины оказались на сетке клетчатой бумаги, а результирующая фигура была максимально подобна исходной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GroundCtrl 0 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба Имеется N относительно точных измерений, скажем, в виде чисел с плавающей запятой. Необходимо "округлить" Округление выполняется по конечному массиву накопленных данных или является вариантом процедуры нелинейной фильтрации в реальном времени? От этих условий зависит насколько качество округления удовлетворяет Вашему правилу. Если обрабатываются накопленные данные, то здесь можно применить какой-нить интегральный критерий качества, удовлетворения которому добиваются прямым перебором. Например - минимизируется сумма расстояний от истинных значений до их округленных версий. Если реч идет о нелинейной фильтрации - тут возможны варианты. Качество результата будет зависеть от размера скользящего окна, в котором выполняется округление. Известный аналог такой процедуры - медианная вильтрация. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба Округление выполняется по конечному массиву накопленных данных или является вариантом процедуры нелинейной фильтрации в реальном времени? По конечному массиву накопленных данных. Перебором трудно, точек может быть много. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба Округление выполняется по конечному массиву накопленных данных или является вариантом процедуры нелинейной фильтрации в реальном времени? По конечному массиву накопленных данных. Перебором трудно, точек может быть много. Тогда находите среднее (или центр масс, если абсолютная погрешность одинаковая), смещаете на это значение, округляете, смещаете назад. Кажется, Вы этого хотите... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GroundCtrl 0 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба Тогда бы я "округлил" так 1.3 - 1 1.4 - 1 1.6 - 1 3.6 - 3 1.3 - 1 А если такая последовательность задана: 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 и так далее с увеличением на 0.1 До какого числа их нужно округлять? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба А если такая последовательность задана: 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 и так далее с увеличением на 0.1 До какого числа их нужно округлять? В этом случае можно использовать обычное округление, т.к. с такими данными все равно как округлять - ничего "выгадать" не удастся. Выгадывать удается если числа как-то коррелируют с сеткой, до которой их округляют. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GroundCtrl 0 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба Выгадывать удается если числа как-то коррелируют с сеткой, до которой их округляют. Тут нужно определиться с терминами. Изначально термин корреляция обозначаль количественную меру статистической связи между двумя случайными величинами. Далее, этим термином стали определять вообще любую связь двх любых понятий. В этом смысле любой набор чисел "коррелирует" с сеткой, до которой эти числа округляют, если задано единое правило округления. Для того, чтобы не блуждать внаглядных примерах, просто напишите конечную цель, которой Вы добиваетесь обрабатывая массив данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба Для того, чтобы не блуждать внаглядных примерах, просто напишите конечную цель, которой Вы добиваетесь обрабатывая массив данных. Есть N выходов от устройства, способного генерировать произвольную последовательность цифровых сигналов (pattern генератор). Выходы соединены с нагрузками при помощи коаксиальных кабелей разной длины. Для компенсации разницы задержек распространения в кабелях на каждом выходе генератора стоит сдвиговый регистр - в качестве линии задержки. Сдвиговые регистры тактируется некой тактовой частотой, для определенности - с периодом 10 нс. В состав устройства включен измеритель времени задержки распространения сигнала в коакс. кабеле, он измеряет время задержки довольно точно, для определенности - с точностью 0.1 нс. После того, как измерены времена задержки всех кабелей, необходимо выставить оптимальное время для каждой линии задержки таким образом, чтобы сигнал, одновременно поданный на все выходы ЛЗ, дошел бы до каждого приемника "одновременно". То есть, чтобы разница во времени между самым ранним и самым поздним дошедшим сигналом была минимальна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GroundCtrl 0 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба То есть, чтобы разница во времени между самым ранним и самым поздним дошедшим сигналом была минимальна. Например так - выставляете для самого медленного кабеля (с самой длинной задержкой) один дискретный элемент задержки. Округлить физическую задержку в кабеле Вы все арвно не сможете. Задержки в остальных каналах выбираете так, чтобы сумма собственной задержки кабеля и задержки в наборе элементов наименьшим образом отличалась (в любую сторону)от суммарной задержки самого медленного кабеля. Для каждого кабеля всего два варианта - если ni-число элеиментов при котором суммарная задержка в i-том кабеле меньше суммарной задержки медленного кабеля, а при ni+1 - больше суммарной задержки медленного кабеля, то выбирается такое ni или ni+1, которое меньше всего отличается от суммарной задержки медленного кабеля Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 20 января, 2007 Опубликовано 20 января, 2007 · Жалоба Задержки в остальных каналах выбираете так, чтобы сумма собственной задержки кабеля и задержки в наборе элементов наименьшим образом отличалась (в любую сторону)от суммарной задержки самого медленного кабеля. "Настроить" задержку для каждого кабеля надо так, чтобы разность между макс и мин задержкой для всех кабелей была минимальна. Поэтому не получится брать за основу какой-то один кабель. Такой пример: - самый длинный кабель 90 нс - второй кабель 84 нс - третий кабель 86 нс Если настраивать задержки так, как Вы предлагаете: - к длинному добавили 10 нс, в сумме 100 нс - ко второму добавили 20 нс, в сумме 104 нс, разница с "длинным" 4 нс - к третьему добавили 10 нс, в сумме 96 нс, разница с "длинным" 4 нс Суммарная разница в группе 104 - 96 = 8 нс Очевидно, что можно настроить лучше: - к длинному добавили 10 нс, в сумме 100 нс - ко второму добавили 20 нс, в сумме 104 нс, разница с "длинным" 4 нс - к третьему добавили 20 нс, в сумме 106 нс, разница с "длинным" 6 нс Суммарная разница в группе 106 - 100 = 6 нс, разброс получился на 2 нс меньше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
InvisibleFed 0 20 января, 2007 Опубликовано 20 января, 2007 · Жалоба В книжках по регрессионно-корреляционному анализу сие должно быть. Я копал бы в сторону мат. ожидания и среднеквадратического отклонения. Вся проблема правильно расставить веса. Если не получиться - вместо мат ождания можно поработать со средним геометрическим. Задача про треугольник наверняка классическая. Если меня не опередять - чуть разгружусь - попробую выдумать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 20 января, 2007 Опубликовано 20 января, 2007 · Жалоба Задержки в остальных каналах выбираете так, чтобы сумма собственной задержки кабеля и задержки в наборе элементов наименьшим образом отличалась (в любую сторону)от суммарной задержки самого медленного кабеля. "Настроить" задержку для каждого кабеля надо так, чтобы разность между макс и мин задержкой для всех кабелей была минимальна. Поэтому не получится брать за основу какой-то один кабель. Такой пример: - самый длинный кабель 90 нс - второй кабель 84 нс - третий кабель 86 нс Если настраивать задержки так, как Вы предлагаете: - к длинному добавили 10 нс, в сумме 100 нс - ко второму добавили 20 нс, в сумме 104 нс, разница с "длинным" 4 нс - к третьему добавили 10 нс, в сумме 96 нс, разница с "длинным" 4 нс Суммарная разница в группе 104 - 96 = 8 нс Очевидно, что можно настроить лучше: - к длинному добавили 10 нс, в сумме 100 нс - ко второму добавили 20 нс, в сумме 104 нс, разница с "длинным" 4 нс - к третьему добавили 20 нс, в сумме 106 нс, разница с "длинным" 6 нс Суммарная разница в группе 106 - 100 = 6 нс, разброс получился на 2 нс меньше. Алгоритм. 1. Сначала все точки сводятся в интервал (X, X+10) 2. Находится левая крайняя. Сдвигается вправо на 10. Успех - повтор. Нет первого успеха - 3. 3. Находим правую крайнюю сдвигаем влево на 10. Успех - повтор. Нет успеха - выход. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 20 января, 2007 Опубликовано 20 января, 2007 · Жалоба Алгоритм. 1. Сначала все точки сводятся в интервал (X, X+10) 2. Находится левая крайняя. Сдвигается вправо на 10. Успех - повтор. Нет первого успеха - 3. 3. Находим правую крайнюю сдвигаем влево на 10. Успех - повтор. Нет успеха - выход. Мне кажется, это не будет работать при определенных наборах. Например, возьмем такой набор: 1 1.1 9 9.1 Разница макс-мин 9.1-1=8.1 нс Понятно, что оптимальный результат должен быть 11 11.1 9 9.1 Это даст разницу макс-мин всего в 2.1 нс Если использовать Ваш алгоритм, то исходный набор не удастся привести к оптимальному, т.к. при сдвиге "левой крайней" точки 1 вправо на 10 получится "неуспех": 11 1.1 9 9.1 Получается макс-мин=11-1.1=9.9 нс, что хуже, чем исходные 8.1 нс Если сдвинуть самую правую точку 9.1 влево на 10, то опять получится макс-мин=9.9 нс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться