Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将此倍频程代码转换为python,以及倍频程中的此运算符是什么';*它是什么';s python等价物_Python_Numpy_Octave - Fatal编程技术网

如何将此倍频程代码转换为python,以及倍频程中的此运算符是什么';*它是什么';s python等价物

如何将此倍频程代码转换为python,以及倍频程中的此运算符是什么';*它是什么';s python等价物,python,numpy,octave,Python,Numpy,Octave,这个运算符在八度音阶“*中是什么?它的python等价物是什么 以下八度代码的python等价物是什么 a = [2;3] b = [1;4] a'*b 简而言之,我想知道('*)的python等价物是什么,它被调用了什么,它做了什么。如何在python中实现相同的功能。我需要新的图书馆吗。有人能把这个部分转换成python吗 提前谢谢 >> a = [2;3] a = 2 3 >> b = [1;4] b = 1 4 >> a'*b

这个运算符在八度音阶“*中是什么?它的python等价物是什么

以下八度代码的python等价物是什么

a = [2;3]
b = [1;4]
a'*b
简而言之,我想知道('*)的python等价物是什么,它被调用了什么,它做了什么。如何在python中实现相同的功能。我需要新的图书馆吗。有人能把这个部分转换成python吗

提前谢谢

>> a = [2;3]
a =
   2
   3
>> b = [1;4]
b =
   1
   4
>> a'*b
ans =  14
使用
numpy
的最直译是:

In [19]: a = np.array([2,3])[:,None]
In [20]: a
Out[20]: 
array([[2],
       [3]])
In [21]: b = np.array([1,4])[:,None]
In [22]: b
Out[22]: 
array([[1],
       [4]])
In [23]: np.dot(a.T,b)
Out[23]: array([[14]])
简短的表达:

In [24]: np.dot([2,3], [1,4])
Out[24]: 14
In [25]: 2*1 + 3*4
Out[25]: 14
MATLAB/Octave
是转置(有时也称为
,共轭转置)
*
是矩阵乘法,
np.dot
np。矩阵
也使用
*
作为矩阵乘法


正如我在一篇评论中指出的那样,我的观点是错误的
是普通转置

也许更重要的是,MATLAB/倍频程矩阵始终至少是二维的,转换总是有区别的
numpy
数组可以是1d,在这种情况下,
np。转置
不起任何作用。因此,在直译中,我添加了一个尾随维度,以确保
a
b
的形状为(2,1)

numpy
有一个
np.matrix
子类,它应该对任性的MATLAB用户更友好。然而,它是在数年前编写的,当时MATLAB只有2d矩阵。所以矩阵总是二维的,永远不会更多

np.matrix(a).conjugate()
是共轭转置,有一个简称
np.matrix(a).H
。(
.T
是非共轭转置`。)


这里不是八度音程专家,但这看起来像两个运算符,
'
*
。当我在八度音程中键入a'*b时(在像您那样定义a和b之后),我得到一个错误。你能告诉我你得到了什么结果吗?我建议阅读,它会告诉你,
是复共轭转置,*是矩阵乘法。这两个都是很多Python包的一部分,包括numpy.OK,都是反向的。我已经有好几年没有使用MATLAB了,对于这类问题,我手头有八度音阶。因为我通常不处理复数,所以忽略了它们之间的区别。
n [76]: aI = a+0*1j
In [77]: aI
Out[77]: 
array([[ 2.+0.j],
       [ 3.+0.j]])
In [79]: aI.conjugate()
Out[79]: 
array([[ 2.-0.j],
       [ 3.-0.j]])
In [80]: np.matrix(aI)
Out[80]: 
matrix([[ 2.+0.j],
        [ 3.+0.j]])
In [81]: np.matrix(aI).H
Out[81]: matrix([[ 2.-0.j,  3.-0.j]])