Что ж, у вас наверняка есть интересная проблема.
Я вижу, что есть кривые со значениями оси Y, которые значительно больше, чем остальные. Я просто взял бы первые N-значения с самыми большими значениями оси Y и затем поместил бы их в кривую экспоненциального затухания (или ту другую кривую, которую вы упоминаете). Затем вы можете просто взять точки, которые наиболее соответствуют этой кривой, а затем оставить остальные точки в покое.
Кроме ...
Это ужасный способ экстраполяции данных. Делая это, вы черпаете данные, которые хотите. Это фальсифицирующая информация, и она очень плохая.
Лучше всего создать единую кривую, подходящую для всех точек, если вы не можете выделить все эти точки в отдельные кривые с внешней информацией.
Но ...
Нам известна некоторая информация: допустимая функция должна иметь только 1 выход на один вход.
Если ось X является дискретной, это означает, что вы можете создать поиск Таблица выходов с учетом ввода. Это позволяет подсчитать, сколько там кривых связано с указанным значением c X (которое может быть единицей времени). Другими словами, вы должны иметь внешнюю информацию для локального разделения точек. Затем вы можете изменить порядок точек при увеличении значения Y, и теперь у вас есть отдельные кривые, определенные в дискретных точках.
По сути, это неразрешимая проблема в общем смысле, но в вашем конкретном приложении c , могут быть дополнительные правила, которые дополнительно определяют домен и диапазон, так что вы можете выполнять фильтрацию данных.
Еще одна вещь ...
Я делаю эти заявления с предположением, что ( Значения X, Y) являются числами с плавающей точкой, которые не могут поддерживать точность после некоторых математических операций.
Если вы используете такие вещи, как unum numbers , вы можете хранить достаточно информации в десятичном виде, так что Ваши функции подгонки могут различать точки без дополнительной фильтрации.
Этот случай - большая надежда, чем что-либо еще, поскольку принятие нового числового представления для обеспечения большей точности при выделении точек выборки в лучшем случае растягивается.
Просто для полноты, есть некоторые математические библиотеки, которые могут помочь Вы.
- Boost.uBLAS
- Eigen
- LAPACK ++
Надеюсь, я дал вам достаточно информации, чтобы вы могли решить твоя проблема.