реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Округление результатов измерения
=AK=
сообщение Jan 19 2007, 09:19
Сообщение #1


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Имеется 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.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jan 19 2007, 09:34
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(=AK= @ Jan 19 2007, 09:19) *
Имеется 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, то что Вы желаете иметь?
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 19 2007, 09:54
Сообщение #3


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Tanya @ Jan 19 2007, 16:04) *
Вот если к Вашему набору (или это последовательность?) добавить в начало(или в конец) еще 1.3, то что Вы желаете иметь?

Тогда бы я "округлил" так
1.3 - 1
1.4 - 1
1.6 - 1
3.6 - 3
1.3 - 1

Примерная аналогия с такой задачей. Представьте, что вы нарисовали на листочке бумаги в клетку какую-то геометрическую фигуру, скажем, треугольник. Теперь надо перерисовать его так, чтобы все вершины оказались на сетке клетчатой бумаги, а результирующая фигура была максимально подобна исходной.
Go to the top of the page
 
+Quote Post
NickNich
сообщение Jan 19 2007, 09:56
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 8-11-05
Пользователь №: 10 593



Цитата(=AK= @ Jan 19 2007, 09:19) *
Имеется N относительно точных измерений, скажем, в виде чисел с плавающей запятой. Необходимо "округлить"


Округление выполняется по конечному массиву накопленных данных или является вариантом процедуры нелинейной фильтрации в реальном времени? От этих условий зависит насколько качество округления удовлетворяет Вашему правилу.

Если обрабатываются накопленные данные, то здесь можно применить какой-нить интегральный критерий качества, удовлетворения которому добиваются прямым перебором. Например - минимизируется сумма расстояний от истинных значений до их округленных версий.

Если реч идет о нелинейной фильтрации - тут возможны варианты. Качество результата будет зависеть от размера скользящего окна, в котором выполняется округление. Известный аналог такой процедуры - медианная вильтрация.
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 19 2007, 10:03
Сообщение #5


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(NickNich @ Jan 19 2007, 16:26) *
Округление выполняется по конечному массиву накопленных данных или является вариантом процедуры нелинейной фильтрации в реальном времени?

По конечному массиву накопленных данных.

Перебором трудно, точек может быть много.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jan 19 2007, 10:36
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(=AK= @ Jan 19 2007, 10:03) *
Цитата(NickNich @ Jan 19 2007, 16:26) *

Округление выполняется по конечному массиву накопленных данных или является вариантом процедуры нелинейной фильтрации в реальном времени?

По конечному массиву накопленных данных.

Перебором трудно, точек может быть много.

Тогда находите среднее (или центр масс, если абсолютная погрешность одинаковая), смещаете на это значение, округляете, смещаете назад. Кажется, Вы этого хотите...
Go to the top of the page
 
+Quote Post
NickNich
сообщение Jan 19 2007, 10:38
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 8-11-05
Пользователь №: 10 593



Цитата(=AK= @ Jan 19 2007, 09:54) *
Тогда бы я "округлил" так
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
До какого числа их нужно округлять?
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 19 2007, 10:57
Сообщение #8


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(NickNich @ Jan 19 2007, 17:08) *
А если такая последовательность задана:
1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 и так далее с увеличением на 0.1
До какого числа их нужно округлять?

В этом случае можно использовать обычное округление, т.к. с такими данными все равно как округлять - ничего "выгадать" не удастся. Выгадывать удается если числа как-то коррелируют с сеткой, до которой их округляют.
Go to the top of the page
 
+Quote Post
NickNich
сообщение Jan 19 2007, 12:59
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 8-11-05
Пользователь №: 10 593



Цитата(=AK= @ Jan 19 2007, 10:57) *
Выгадывать удается если числа как-то коррелируют с сеткой, до которой их округляют.

Тут нужно определиться с терминами.
Изначально термин корреляция обозначаль количественную меру статистической связи между двумя случайными величинами. Далее, этим термином стали определять вообще любую связь двх любых понятий. В этом смысле любой набор чисел "коррелирует" с сеткой, до которой эти числа округляют, если задано единое правило округления.

Для того, чтобы не блуждать внаглядных примерах, просто напишите конечную цель, которой Вы добиваетесь обрабатывая массив данных.
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 19 2007, 13:16
Сообщение #10


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(NickNich @ Jan 19 2007, 19:29) *
Для того, чтобы не блуждать внаглядных примерах, просто напишите конечную цель, которой Вы добиваетесь обрабатывая массив данных.

Есть N выходов от устройства, способного генерировать произвольную последовательность цифровых сигналов (pattern генератор). Выходы соединены с нагрузками при помощи коаксиальных кабелей разной длины. Для компенсации разницы задержек распространения в кабелях на каждом выходе генератора стоит сдвиговый регистр - в качестве линии задержки. Сдвиговые регистры тактируется некой тактовой частотой, для определенности - с периодом 10 нс.

В состав устройства включен измеритель времени задержки распространения сигнала в коакс. кабеле, он измеряет время задержки довольно точно, для определенности - с точностью 0.1 нс.

После того, как измерены времена задержки всех кабелей, необходимо выставить оптимальное время для каждой линии задержки таким образом, чтобы сигнал, одновременно поданный на все выходы ЛЗ, дошел бы до каждого приемника "одновременно". То есть, чтобы разница во времени между самым ранним и самым поздним дошедшим сигналом была минимальна.
Go to the top of the page
 
+Quote Post
NickNich
сообщение Jan 19 2007, 13:52
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 8-11-05
Пользователь №: 10 593



Цитата(=AK= @ Jan 19 2007, 13:16) *
То есть, чтобы разница во времени между самым ранним и самым поздним дошедшим сигналом была минимальна.

Например так - выставляете для самого медленного кабеля (с самой длинной задержкой) один дискретный элемент задержки. Округлить физическую задержку в кабеле Вы все арвно не сможете. Задержки в остальных каналах выбираете так, чтобы сумма собственной задержки кабеля и задержки в наборе элементов наименьшим образом отличалась (в любую сторону)от суммарной задержки самого медленного кабеля.

Для каждого кабеля всего два варианта - если ni-число элеиментов при котором суммарная задержка в i-том кабеле меньше суммарной задержки медленного кабеля, а при ni+1 - больше суммарной задержки медленного кабеля, то выбирается такое ni или ni+1, которое меньше всего отличается от суммарной задержки медленного кабеля
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 20 2007, 03:33
Сообщение #12


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(NickNich @ Jan 19 2007, 20:22) *
Задержки в остальных каналах выбираете так, чтобы сумма собственной задержки кабеля и задержки в наборе элементов наименьшим образом отличалась (в любую сторону)от суммарной задержки самого медленного кабеля.

"Настроить" задержку для каждого кабеля надо так, чтобы разность между макс и мин задержкой для всех кабелей была минимальна. Поэтому не получится брать за основу какой-то один кабель. Такой пример:
- самый длинный кабель 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 нс меньше.
Go to the top of the page
 
+Quote Post
InvisibleFed
сообщение Jan 20 2007, 10:55
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469



В книжках по регрессионно-корреляционному анализу сие должно быть. Я копал бы в сторону мат. ожидания и среднеквадратического отклонения. Вся проблема правильно расставить веса. Если не получиться - вместо мат ождания можно поработать со средним геометрическим. Задача про треугольник наверняка классическая. Если меня не опередять - чуть разгружусь - попробую выдумать.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jan 20 2007, 14:26
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(=AK= @ Jan 20 2007, 03:33) *
Цитата(NickNich @ Jan 19 2007, 20:22) *

Задержки в остальных каналах выбираете так, чтобы сумма собственной задержки кабеля и задержки в наборе элементов наименьшим образом отличалась (в любую сторону)от суммарной задержки самого медленного кабеля.

"Настроить" задержку для каждого кабеля надо так, чтобы разность между макс и мин задержкой для всех кабелей была минимальна. Поэтому не получится брать за основу какой-то один кабель. Такой пример:
- самый длинный кабель 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. Успех - повтор. Нет успеха - выход.
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 20 2007, 14:57
Сообщение #15


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Tanya @ Jan 20 2007, 20:56) *
Алгоритм.
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 нс.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01501 секунд с 7
ELECTRONIX ©2004-2016