- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 Matlab 中有该代码,需要将其引入 Python。
x_cord = [58.2986 39.5842 23.0044 10.9427 3.0465]
y_cord = [0.9600 0.9700 0.9800 0.9900 1.0000]
[p,S,mu]=polyfit(x_cord, y_cord, 3); % p = [-0.002120716372462 0.004361710897014 -0.014104050472739 0.977080254892409]
result=polyval(p, 16.574651718139650, [], mu); % result = 0.9848
当我使用 numpy.polyfit(x_cord, y_cord, 3) 时,我得到的结果与示例中不同。另外,我在 Numpy 中找不到这种 polyval(具有两个以上输入参数)。
当我询问一个返回参数时,Matlab 和 Numpy 结果是相同的。
最佳答案
用于拟合多项式的 numpy 和 scipy 函数不包含像 Matlab 函数那样自动缩放输入的选项。
首先,以下是如何在不缩放的情况下适应数据的方法:
In [39]: x_cord = [58.2986, 39.5842, 23.0044, 10.9427, 3.0465]
In [40]: y_cord = [0.9600, 0.9700, 0.9800, 0.9900, 1.0000]
In [41]: c = np.polyfit(x_cord, y_cord, 3)
In [42]: c
Out[42]:
array([ -1.91755884e-07, 2.43049234e-05, -1.52570960e-03,
1.00431483e+00])
In [43]: p = np.poly1d(c)
In [44]: p(16.574651718139650)
Out[44]: 0.98483061114799408
In [45]: xx = np.linspace(0, 60, 500)
In [46]: plot(xx, p(xx))
Out[46]: [<matplotlib.lines.Line2D at 0x110c8d0f0>]
In [47]: plot(x_cord, y_cord, 'o')
Out[47]: [<matplotlib.lines.Line2D at 0x10d6f8390>]
numpy 计算 agrees with Wolfram Alpha .
<小时/>以下是如何非常接近实际的 Matlab 计算的方法。
为了方便起见,将 x_cord
从列表转换为 numpy 数组。
In [64]: x_cord = np.array(x_cord)
计算x_cord
的平均值和标准差。
In [65]: mu = np.mean(x_cord)
In [66]: std = np.std(x_cord, ddof=1)
使用x_cord
的移位和缩放版本调用np.polyfit()
。
In [67]: cscaled = np.polyfit((x_cord - mu)/std, y_cord, 3)
这些值非常接近 Matlab 代码注释中显示的数组 p
。
In [68]: cscaled
Out[68]: array([-0.00212068, 0.00436168, -0.01410409, 0.97708027])
创建一个可以调用的poly1d
对象。
In [69]: pscaled = np.poly1d(cscaled)
pscaled
的输入必须使用 mu
和 std
进行移位和缩放。
In [70]: pscaled((16.574651718139650 - mu)/std)
Out[70]: 0.98483061114799486
关于python - 具有三个输出的 Matlab polyval 函数在 Python/Numpy 中等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45338872/
我正在寻找一个函数来计算具有多个变量的多项式的值。对于二维多项式,我使用 numpy.polyval,我将系数值作为列表和 x 值。 我想知道 x、y、z 空间是否有类似的函数,所以我的输入是系数值和
我有一些数据,我使用 numpy.polynomial.polynomial.polyfit 拟合了二阶多项式 data_fit = poly.polyfit(length_spline_a, tem
我想知道 np.polyval() 是否有一个方便的反函数,我在其中给出 y 值并求解 x? 我知道我可以这样做的一种方法是: import numpy as np # Set up the ques
我对 Python 知之甚少,我正在尝试使用它来进行一些简单的多项式插值,但对于其中一个内置函数,我有一些不了解的地方。 我正在尝试使用 polyval(p,x) 计算 x 处的多项式 p。 我做了一
这个问题在这里已经有了答案: MATLAB curve fitting - least squares method - wrong "fit" using high degrees (1 个回答)
假设一个 n 维观察数组被 reshape 为一个二维数组,每行是一个观察集。使用这种 reshape 方法,np.polyfit 可以计算整个 ndarray(矢量化)的二阶拟合系数: fit =
我正在尝试编写一个函数,您可以在其中为它提供一个 mxn 数组,其目标是遍历该数组并为每个值执行 numpy.polyval。数组将包含一些 nan 值,因此我希望函数以与原始数组相同的顺序返回 na
更新脚本中有错误。 我正在研究 Julia 和 Mandelbrot 集以及牛顿分形的可视化 - 为此,我需要计算复平面中的很多值。我可以使用我想要的任何类型的数学函数,但对于多项式来说已经足够了。
我在 Matlab 中有该代码,需要将其引入 Python。 x_cord = [58.2986 39.5842 23.0044 10.9427 3.0465] y_cord = [0.9600 0.
迫切需要一个与 Matlab 中存在的 polyval 和 polyfit 函数等效的 Javascript。本质上,matlab 中的那些函数根据指定的多项式基于两个大小相等的数组进行曲线拟合。我需
我是一名优秀的程序员,十分优秀!