在示例数据集上调用 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 结果?
最佳答案
这给出了相同的结果。
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
的长度,包括两端。如果我没记错的话)
插值线常数的差异仅仅是因为x轴的起始值不同。
关于python - Numpy 和 matlab polyfit 结果差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21806129/