二维数据的梯度正交q多项式拟合
Scikit-Qfit的Python项目详细描述
scikit-qfit是一个支持将梯度正交q多项式拟合到2d数据的软件包。
说明
此包实现了中描述的算法:
- G W FOBES,Fitting freeform shapes with orthogonal bases,选择。快车2119061-19081(2013年)
有关q-自由形式多项式的其他项目文档和参考资料,请访问: http://scikit-qfit.readthedocs.org/。
安装
该软件包可以通过pip安装:
> pip install scikit-qfit
用法
若要从数据映射生成无q形式的频谱,请传递坐标数组x和y以及 以shape(x.size,y.size)作为qspec()方法参数的数据。方位和径向光谱 极限分别由m_max和n_max设置。
>>> import skqfit.qspectre as qf >>> ... >>> qspec = qf.qspec(x, y, zmap, m_max=500, n_max=500)
为了观察光谱成分的贡献,有必要在正向处理步骤中使用正弦和余弦元素。 在修改光谱之后,逆过程将创建一个数据映射以及x和y导数。
>>> qs = qf.QSpectrum() >>> qs.data_map(x, y, zmap) >>> a_nm, b_nm = qs.q_fit(mmax, nmax) >>> ... # modify spectrum >>> nmap, dfdx, dfdy = qs.build_map(x, y, a_nm, b_nm, inc_deriv=True)
通过传递一组表示 (x,y)坐标。
>>> zv, dfdx, dfdy = qs.build_profile(xv, yv, a_nm, b_nm, inc_deriv=True)
限制
该算法所需的雅可比多项式计算可以产生非常大的数目,从而限制了光谱分辨率。 对于径向和方位项(n,m)的最大值为1500。使用大于此值的值可能导致溢出。 如果数据映射的标称光谱分辨率大于此限制,则应在处理之前过滤数据 以避免混淆。
注意,这个过程是一个n^2算法,因此将径向项和方位项的数目加倍需要四倍的时间。
依赖关系
该软件包需要numpy和scipy,并在linux上使用:
- Python 2.7.6
- numpy 1.14.5
- scipy 1.0.0
这些python、numpy和scipy版本在测试时可以在ubuntu 18.04linux版本上获得。 这个包已经用Python3.6成功地进行了非正式测试,我不知道为什么它不应该使用 这些包的后续版本。
确认
- 格雷格福布斯支持算法的实现和验证。
- andreas beutler,Mahr GmbH,用于选择将此工作作为开放源码提供。
注
此项目是使用PyScaffold 3.2.1建立的。详细信息和用法 有关pyscaffold的信息,请参见https://pyscaffold.org/。