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结果?
这给出了相同的结果。
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轴起始值的差异。