在示例数据集上调用numpy.polyfit和matlab polyfit函数时,我得到了不同的结果:
Python3.2:
(Pdb) a_array = [1, 2, 4, 6, 8,7, 9]
(Pdb) numpy.polyfit( range (len (a_array)), a_array, 1)
array([ 1.35714286, 1.21428571])
Matlab的:
a_array = [1, 2, 4, 6, 8,7, 9]
polyfit(1:1:length(a_array), a_array, 1)
ans =
1.3571 -0.1429
这显然不是数字错误。
我假设某些特殊选项的默认值(如std函数中的ddof)在Python和matlab之间有所不同,但我找不到它。或许我应该使用另一个版本的Python的polyfit?
如何在Python Numpy和Matlab中获得相同的polyfit结果?
答案 0 :(得分:4)
这给出了相同的结果。
In [10]: np.polyfit(range(1, len(a_array)+1), a_array, 1)
Out[10]: array([ 1.35714286, -0.14285714])
如果你没有给它一个start参数, range(...)
从零开始,并且不包括终点。
1:1:length(a_array)
在Matlab中,这应该给你1个a_array
的长度,包括两端。如果我记得正确的Matlab)
插值线的常数的差异仅仅是因为x轴的起始值不同。