鱼C论坛

 找回密码
 立即注册
查看: 3413|回复: 2

[已解决]表示大量的点

[复制链接]
发表于 2023-1-30 15:20:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

除了转换成图片,还有没有其他方法?
最佳答案
2023-5-19 22:51:52
如果你想要用直线连接大量无规律的点,可以使用拟合曲线算法。这种算法可以通过拟合一条平滑的曲线(通常是折线或曲线)来精确表示大量的离散数据。

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

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

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

最终,你可以将得到的拟合曲线数据存储在文件中,例如使用 CSV 或 JSON 格式。这种数据格式可以在需要时轻松读取和处理,同时确保了数据的可存储性。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-31 08:27:51 | 显示全部楼层
有。
首先将每个点储存为一个元组(x, y)
将所有点储存为一个列表[(x1, y1), …, (xn, yn)]
然后用pickle写入文件
注:我没试过,可能很占内存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-19 22:51:52 | 显示全部楼层    本楼为最佳答案   
如果你想要用直线连接大量无规律的点,可以使用拟合曲线算法。这种算法可以通过拟合一条平滑的曲线(通常是折线或曲线)来精确表示大量的离散数据。

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

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

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

最终,你可以将得到的拟合曲线数据存储在文件中,例如使用 CSV 或 JSON 格式。这种数据格式可以在需要时轻松读取和处理,同时确保了数据的可存储性。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 02:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表