如何将此倍频程代码转换为python,以及倍频程中的此运算符是什么';*它是什么';s python等价物
这个运算符在八度音阶“*中是什么?它的python等价物是什么 以下八度代码的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
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]])