2014-02-16 124 views
5

上示范组数据调用numpy.polyfit和MATLAB polyfit函数时,我得到不同的结果:NumPy的和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结果?

回答

4

这给出了相同的结果。从零

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

range(...)开始,如果你不给它一个开始的说法,并且不包含终点。

1:1:length(a_array)这在Matlab中应该给你1的长度a_array包含两端。如果我正确地记得Matlab)

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

+0

谢谢,我错过了那个小细节! –