我目前正在做一个项目,这个项目涉及到将一个在MATLAB中运行的程序翻译成Python,以提高速度和效率。然而,我遇到了一个绊脚石。首先,我搞不清在MATLAB中波浪号(~)表示什么,以及如何在python中以相应的方式表示它。第二,我一直在搜索文档,我也很难在MATLAB中找到一个与“sign”函数等价的函数。在
indi = ~abs(indexd);
wav = (sum(sum(wv)))/(length(wv)*(length(wv)-1));
thetau = (sign(sign(wv - wav) - 0.1) + 1)/2;
thetad = (sign(sign(wav - wv) - 0.1) + 1)/2;
我已经将indexd和wv从前面的代码部分转换为numpy数组。替换~和符号函数的最有效的python方法是什么?在
如果您使用} 。因此,上面的代码只是:
numpy
,那么您还可以使用~
来反转类似MATLAB的东西。请参见:What does the unary operator ~ do in numpy?。sign
函数也存在于numpy
中。您使用^{注意,在MATLAB中使用
^{pr2}$length
可以在矩阵中找到最大的维数,而numpy
则使用len
来给出矩阵中的总行数。假设wv
中的行数大于或等于wv
中的列数,那么上面的代码将如您所期望的那样工作。但是,如果列多于行,则需要找到维度的最大值并使用该值。。。所以:默认情况下,上面对^{} 的调用实际上对所有维度求和,因此不需要调用嵌套的
sum
调用来对整个矩阵求和(感谢Divakar!)。在完全推荐您到这里来看看从MATLAB翻译到
numpy
:http://wiki.scipy.org/NumPy_for_Matlab_Users的很棒的表格和指南相关问题 更多 >
编程相关推荐