Сравнение чисел с концепцией допуска: - PullRequest
1 голос
/ 05 августа 2020

Edit1: Изменен вопрос, чтобы соответствовать руководящим принципам. Я уже задавал этот вопрос, но он был снят как нечеткий. Переписал вопрос, чтобы было понятнее.

Моя цель - сравнить около 6000 чисел друг с другом и найти подходящую / ближайшую пару. Но ни одно число не равно другому и имеет погрешность / допуск.

Мое начальное условие - два блока данных, сохраненные в двух массивах. Блок данных [A] - это числа теоретически рассчитанных чисел. Блок данных [B] представляет собой действительные измеренные числа. [B] являются реальными размерами объекта и должны быть как можно ближе к [A] (погрешность измерения). Я должен найти Am для соответствующего Bn.

Каждое число [A] выше предыдущего на значение X или Y. Возможны как X, так и Y, и поэтому структура типа «дерево» после этого отображается (не важно для процесса сравнения). Каждое число в [B] имеет ошибку измерения, и каждое «добавление» X и Y имеет шанс 1,1% на 1%. Это означает, что в более высоких диапазонах чисел смещение от теоретических чисел [A] будет больше. Ближайшее соответствие B_n с числом [A] (A_m) должно быть связано / выделено / как-то запомнено.

Моя идея состоит в том, чтобы вычислить разницу / смещение между одним числом [B] (B_n) и каждое число [A]. Пара с наименьшим смещением должна быть запомнена, и смещение также должно быть сохранено.

Это будет выглядеть так (все еще не код, просто концепция):

z=1
loop {
    offset1 = B_n – A_m
    offset2 = B_n – A_m+z
    is offset1 lower than offset2?
       Yes: z=z+1;
       No:  offset1 = offset2;
            memorize m
}

Есть ли функция, которая делает это сама / делает это аналогично / делает это по-другому с тем же результатом? Сравниваем числа и возвращаем ближайшую пару. Допустим ли этот метод для использования?

Дополнительная информация: язык программирования = C // Числовые блоки данных = два массива длиной 3000 и более // Диапазон чисел: от ~ 100.000001 до ~ 100,001.000001 //

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...