Концепция сравнения чисел с допуском - PullRequest
0 голосов
/ 04 августа 2020

Я хотел спросить, есть ли лучший способ сравнить числа с допуском, чем мой.

Редактировать: Похоже, я был слишком расплывчатым с моим объяснением. добавил информацию в текст. Это только концепция до сих пор. Я еще ничего не программировал.

Я хочу сравнить около 6000 чисел друг с другом. Измеренные числа [A] немного отличаются от чисел [B]. [A] - рассчитанные молярные массы молекул (полимеры указать c). [B] - измеренные молярные массы молекул. Из-за ошибок измерения и обилия изотопов измеренные молярные массы постепенно увеличиваются с каждой добавленной повторяющейся единицей полимера (= больше элементов в молекуле = больше смещения). Разница в молярных массах относительно мала для более низких молярных масс (~ 0,1) и может достигать ~ 10 в более высоких диапазонах. (Кроме того, числа в [B] никогда не будут точно такими же, как вычисленные числа в [A].) Диапазон чисел составляет от ~ 100,000000 до ~ 76000,000000 (если быть точным, много). Практические числа [A] и вычисленные числа [B] записаны в двух разных массивах (двойные) и не отсортированы.

Моя цель - найти ближайшее значение числа в [B] и связать его с число в [A] и пометьте их как «эта молекула». Каждое отмеченное число / молекула больше не будет использоваться ни с каким другим числом. Одно число [B] имеет только одно совпадающее число в [A], которое должно быть связано / записано рядом друг с другом. Короче говоря, я должен найти число [B], которое лучше всего соответствует моему числу в [A]. (Я также должен отмечать числа, когда два или более значения [B] похожи на [A] и не различимы. Но это другая проблема в другой раз) Моя идея сейчас заключается в том, чтобы взять одно число [A] и сравнить это с каждым числом [B]. Пара с наименьшей разницей / смещением (Num (A) - Num (B)) считается такой же и используется в дальнейшем.

Есть ли лучший способ сделать это? Есть ли функция, которая делает это сама по себе? У вас есть предложения, как я могу улучшить этот метод? Плохо ли использовать массив длиной 6000?

Дополнительная информация: я программирую на C Практические и теоретические значения хранятся в двойных массивах [6000] Я сохраняю / записываю данные в excel как структуры таблиц

...