Развитие проекта ECUjd: Поправленный алгоритм заполнения пустых ячеек…
Развитие проекта ECUjd: Поправленный алгоритм заполнения пустых ячеек (без тяжелых сплайнов и зависаний) В рамках работы над редактором калибровок ECUjd успешно реализован и протестирован авторский алгоритм восстановления пропущенных данных в 3D-картах. Функция предназначена для автоматического заполнения «пустот» в таблицах прошивок ЭБУ, которые могут возникать при частичном сборе логов или ручном удалении некорректных точек. Суть проблемы и стандартные решения. Обычно для заполнения пустых зон в двумерных массивах применяют классические математические методы: бикубические сплайны, интерполяцию Кригинга (Kriging) или метод радиальных базисных функций. У них есть два серьезных минуса в рамках чип-тюнинга: Эффект Рунге (осцилляция на краях): Математические формулы на границах резких перепадов часто уходят в «раскачку», генерируя ложные пики или провалы, которых быть не должно. Вычислительная сложность: Требуется построение и расчет тяжелых систем линейных уравнений, что избыточно для работы с сетками калибровок. Как устроен новый алгоритм. Вместо использования стандартных библиотек высшей математики был разработан каскадный многопроходный автомат. Он работает по принципу пошагового «стягивания» пустот на основе локального соседства. Процедура выполняет заполнение в 5 последовательных этапов: Полносвязный поиск (4 точки): Программа ищет пустые ячейки, зажатые со всех сторон (крестом или по диагонали), и рассчитывает их как среднее арифметическое. Многопроходное круговое стягивание (3 точки): Через итерационный цикл while запускаются 4 направленных сканера (слева-внизу, справа-вверху и т.д.). Пустоты равномерно заполняются со всех сторон, ссужаясь к центру, что исключает перекос значений в одну сторону. Линейный мост по горизонтали (2 точки): Затягивание оставшихся линейных пропусков в строках. Линейный мост по вертикали (2 точки): Затягивание пропусков в столбцах. Краевая экстраполяция (3 точки в ряд): Финальный проход по периметру для безопасного «наращивания» крайних зон таблицы, где физически нет соседей с одной из сторон. Результаты тестовый алгоритм был проверен на реальной карте топливной коррекции (размерность 15х15), в которой искусственно удалили до 40% внутренних и крайних значений. Точность: В стабильных зонах восстановленные значения совпали с оригиналом до тысячных долей. На границах перепадов алгоритм плавно соединил точки без генерации ложных выбросов — значение новой ячейки физически застраховано от выхода за рамки её реальных соседей. Стабильность: Код полностью автономен, не требует сторонних математических модулей и отрабатывает сетку мгновенно, не нагружая интерфейс программы. Решение является полностью индивидуальной разработкой в рамках проекта ECUjd. Логика пошагового сужения диапазонов показала себя более надежной и предсказуемой для инженерных задач ЭБУ, чем классические сплайн-методы.