Numpy和matlab polyfit产生差异

时间:2014-02-16 01:35:26

标签: python matlab numpy

在示例数据集上调用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结果?

1 个答案:

答案 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轴的起始值不同。