目前,我正在尝试使用 Python 分析时间序列数据。作为这样做的指导方针,我将自己定位在一个 MATLAB 脚本上,它几乎可以完成我想做的所有事情。到目前为止它工作得很好,但现在我碰到了那个脚本中使用的勒让德多项式。
我尝试了它的NumPy 实现,但我找不到(或多或少)产生与MATLAB function 相同结果的方法。
基本上,这就是我想知道的。如何让我的 Python 代码给出与 MATLAB 代码相同的结果?
作为一个小示范,
k= [0 1 1;1 1 0 ;0 0 1]
legendre(2,k)
给出:
ans(:,:,1) =
-0.5000 1.0000 -0.5000
0 0 0
3.0000 0 3.0000
ans(:,:,2) =
1.0000 1.0000 -0.5000
0 0 0
0 0 3.0000
ans(:,:,3) =
1.0000 -0.5000 1.0000
0 0 0
0 3.0000 0
而我的 Python 版本是这样的:我尝试的方式是这样的:
legendre = np.polynomial.legendre.Legendre([0,1,2])
legendre(k)
和产量:
array([[-1., 3., 3.],
[ 3., 3., -1.],
[-1., -1., 3.]])
我看到了一些有点奇怪的东西,但不幸的是我不知道如何测试它们,因为这是我第一次听说像勒让德多项式这样的东西,而且 NumPy 的文档和维基百科都对理解没有很大帮助它。