Я пытаюсь создать прототип архивного формата, который может лучше пережить повреждение данных. Моя схема состоит в том, чтобы преобразовать каждый символ в десятичную и затем построить данные.
Например:
Немного _
83 111 109 101 32 …….. 115
После построения этих ^ чисел ^ можно описать с помощью функции: -18.04 * ln (x) + 124.14
Поскольку каждый набор чисел будет отображаться с использованием натурального логарифма, я планирую добавить число с плавающей точкой в конец каждой строки в виде [is_neg] [first_num] [second_num], например, 11804124,14
Первое число всегда будет логическим значением, представляющим, является ли оно отрицательным или положительным.
Следующие четыре числа всегда будут коэффициентом ln.
Последние 5 чисел всегда будут постоянными. Если это меньше чем сто, ему будет предшествовать 0.
Ничто из этого не важно. Я подумал, что это лучший способ представить данные. Если у кого-то есть идея получше, я бы хотел ее услышать (серьезно).
В настоящее время я делаю это в Excel. Я выделяю цифры, мастер диаграмм и т. Д., Добавляю логарифмическую линию графика.
Вот мой вопрос. Есть ли способ, алгоритмически, дать набор из двух или более чисел для генерации логарифмической функции? Было бы очень мило, если бы где-то для этого был заранее определенный класс. Я пытался искать вокруг, но не мог ничего найти. Я подумал, что .Net может что-то для этого, учитывая, что это особенность Excel.
Кстати, на всякий случай, если кому-то интересно, я планирую добавить добавление уравнения в конец строки (как я уже говорил ранее). Для обнаружения и исправления повреждения архива я собираюсь обойти каждую строку и вычислить уравнение, которое лучше всего описывает эту строку. Если это значение слишком велико (скажем, более 20%), я сделаю вывод, что либо архив слишком поврежден для восстановления, либо метаданные повреждены.
Если заданное значение находится в пределах допуска, мой план восстановления архива состоял бы в том, чтобы сделать перестановку для каждого значения в строке и вычислить уравнение, связанное с ним. Мутантный набор, который наиболее точно соответствует функции, будет считаться «правильным» набором.
Сложно, да? Я также открыт для идей. Большое спасибо за любую помощь заранее!
То, что вы спрашиваете, вероятно, лучше всего рассчитывается с использованием линейная регрессия (с помощью приближение наименьших квадратов) данных, после преобразования указанных данных с использованием логарифма.
В целом, я сомневаюсь, что ваша схема будет очень полезна, поскольку вычисление этих логарифмов довольно сложно и восстановление данных по этой линии будет трудным. Для идей по этому вопросу, посмотрите на прямое исправление ошибок.
Других решений пока нет …