Matlab Polyval函数,具有与Python / Numpy等效的三个输出

ants

我在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计算与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)

np.polyfit()使用的缩放版本进行呼叫x_cord

In [67]: cscaled = np.polyfit((x_cord - mu)/std, y_cord, 3)

这些值非常接近pMatlab代码的注释中显示的数组

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python中Matlab的datenum(datestring)的等效函数

Matlab与Python的“ not in”等效吗?

Python等效于MATLAB的lsqr(),带有第一个参数的函数

Matlab中存在Optimset函数,是否有Python等效项?

MATLAB函数唯一的Python等效项

numpy或python中的等效matlab函数mod

是否存在与MATLAB的“ improfile”函数等效的Python?

C ++ STL中是否有等效的Polyval(Matlab函数)?

等价于Python / Numpy中的Matlab函数`eps`

Python:具有三个类的新变量的条件

使用Java的堆栈在Matlab中弹出三个向量

在python中具有相同形状的2个numpy数组的matlab操作

如何在PDO中编写此查询以获取三个不同数组中的所有三个输出

具有自定义输出变量名称的Matlab importdata函数

如何从python捕获matlab函数的输出

Matlab的等效R函数

Matlab lsqcurvefit()函数的Python等效性

具有三个数组的等效语句

MATLAB:对于N> 1,polyval函数绘制多条线

MatLab transformPointsForward在Python中等效

最小化Matlab中的三个变量函数

Matlab:如何将所有三个通道中图片的特定RGB值更改为“ 255”(白色)

最小化一个范围内三个变量的函数(MATLAB)

Python 等效于 MATLAB 函数 findchangepts

在 Python 中使用循环中的三个函数,其中第三个的输出是所有三个的新输入

Python:使用 write() 函数输出三个变量

if 语句具有三个结果

编写 numpy 的 polyval() 函数

Numpy Python 等效于 MATLAB corr