鱼cpython学习者 发表于 2023-1-30 15:20:15

表示大量的点

本帖最后由 鱼cpython学习者 于 2023-1-30 15:25 编辑

有什么数学方法或算法能够将大量的无规律点(十万个到一百万个),表达出来(比如用很多直线)
要求:可以逆推,根据算法的结果逆推出所有的点,而且算法的结果要可存储

除了转换成图片,还有没有其他方法?

歌者文明清理员 发表于 2023-1-31 08:27:51

有。
首先将每个点储存为一个元组(x, y)
将所有点储存为一个列表[(x1, y1), …, (xn, yn)]
然后用pickle写入文件
注:我没试过,可能很占内存

sfqxx 发表于 2023-5-19 22:51:52

如果你想要用直线连接大量无规律的点,可以使用拟合曲线算法。这种算法可以通过拟合一条平滑的曲线(通常是折线或曲线)来精确表示大量的离散数据。

其中一种常见的拟合曲线算法是最小二乘法。最小二乘法可以将离散数据点集拟合成一个函数,并使该函数与原始数据的偏差最小化。在实际应用中,通常使用多项式、指数或对数函数来表示离散数据的趋势。

此外,你还可以使用 B 样条曲线。B 样条曲线是用于构造平滑曲线的一种数学方法,能够处理大量的离散数据,并且具有更好的局部性质。在 B 样条曲线中,每个点都被赋予一个权重,它影响着相邻控制点的位置和切线方向,从而使得曲线更加平滑。

根据算法的结果反向逆推回原始数据点的方法取决于使用的拟合曲线算法。对于最小二乘法,可以使用拟合函数来计算任意给定自变量时连续的因变量值和导数值。对于 B 样条曲线,可以使用曲线中的参数和控制点来计算任意点的位置。

最终,你可以将得到的拟合曲线数据存储在文件中,例如使用 CSV 或 JSON 格式。这种数据格式可以在需要时轻松读取和处理,同时确保了数据的可存储性。
页: [1]
查看完整版本: 表示大量的点