Numpy和matlab polyfit产生差异

Seb*_*mer 7 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])
Run Code Online (Sandbox Code Playgroud)

Matlab的:

a_array = [1, 2, 4, 6, 8,7, 9]
polyfit(1:1:length(a_array), a_array, 1)

ans =
    1.3571   -0.1429
Run Code Online (Sandbox Code Playgroud)

这显然不是数字错误.

我假设某些特殊选项的默认值(如std函数中的ddof)在Python和matlab之间有所不同,但我找不到它.或许我应该使用另一个版本的Python的polyfit?

如何在Python Numpy和Matlab中获得相同的polyfit结果?

M4r*_*ini 5

这给出了相同的结果。

In [10]: np.polyfit(range(1, len(a_array)+1), a_array, 1)
Out[10]: array([ 1.35714286, -0.14285714])
Run Code Online (Sandbox Code Playgroud)

range(...) 如果不给它一个开始参数,则从零开始,并且不包括终点。

1:1:length(a_array)在Matlab中,这应该给您1的长度(a_array包括两端)。如果我没记错Matlab)

内插线常数的差异仅仅是由于x轴起始值的差异。