目前,我正在尝试用Python分析时间序列数据。作为这样做的指导方针,我将自己定位在一个MATLAB脚本上,它几乎可以完成我想做的所有事情。到目前为止,它运行得很好,但现在我遇到了这个在脚本中使用的Legendre多项式。在
我尝试了它的NumPy implementation,但是我找不到(或多或少)产生与the MATLAB function相同的结果的方法。在
基本上,这就是我想知道的。如何使Python代码得到与MATLAB代码相同的结果?在
作为一个小的示范
k= [0 1 1;1 1 0 ;0 0 1]
legendre(2,k)
给出:
^{pr2}$而我的Python版本是这样的:我尝试的方式是这样的:
legendre = np.polynomial.legendre.Legendre([0,1,2])
legendre(k)
并产生:
array([[-1., 3., 3.],
[ 3., 3., -1.],
[-1., -1., 3.]])
我看到了一些有点奇怪的东西,但不幸的是,我不知道如何测试它们,因为这是我第一次听说类似Legendre多项式的东西,无论是NumPy的文档还是Wikipedia对理解它都没有很大帮助。在
@user3684792感谢您的代码,但这并不是真正需要的,例如,}将不足以满足需要(尽管很容易修复)。在
cosdist
通常是一个矩阵,因此{根据你的评论和this对Legrande多项式的定义,我自己试过了。我最后得到的是这个代码。我可以问问你对这件事的看法吗?在
如果cosdist只是一个整数,这个脚本将给出与您相同的结果。 令我恼火的是,这些结果与从Matlab代码得到的结果仍然有些不同,也就是说,结果数组的维数甚至不同。 谢谢。 编辑:无意中,我把}混淆了。现在应该是正确的
m
和{我也遇到了这个问题。以这个问题为出发点,得出以下结论。请注意:我使用的MATLAB函数如下:
我需要在Python中生成等价物。代码如下:
^{pr2}$我对Python非常陌生,所以我相信上面的内容可以改进。在
好吧,我想你在用这个模块复制这些结果时会遇到麻烦,因为从名字上判断,只处理勒让德多项式(这些是勒让德方程的解,其中mu=0,或者称为0阶解)
我不知道matlab,但是看一下文档,你输入的是计算勒让德函数的结果,达到指定的阶数。在
在python中,您所做的似乎是创建一个由zeroeth一阶和二阶legendre多项式组成的组合
0*l*0+1*l*1+2*l*2
可以在指定点处计算勒让德多项式:
你可以验证一下
^{pr2}$我希望这是有用的-随时问更多的问题
编辑:
我希望这对你有用,如果我搞砸了什么就告诉我
相关问题 更多 >
编程相关推荐