python怎么取共轭_自用numpy语法的共轭转置

我对numpy不是很有经验,但根据@hpaulj的评论,我可以提出以下建议:

如果您不想受到numpy.matrix对象的限制(请参见警告here),您可以定义自己的函数来执行共轭转置。你需要做的就是转置数组,然后从结果中减去结果的虚部乘以2。我不确定这在计算上有多有效,但它肯定会给出正确的结果。在

我希望这样的事情能奏效:Y = C * ctranspose(Up[:, 0:p-1]) * Y

...

def ctranspose(arr: np.ndarray) -> np.ndarray:

# Explanation of the math involved:

# x == Real(X) + j*Imag(X)

# conj_x == Real(X) - j*Imag(X)

# conj_x == Real(X) + j*Imag(X) - 2j*Imag(X) == x - 2j*Imag(X)

tmp = arr.transpose()

return tmp - 2j*tmp.imag

(解决方案针对Python3)

一个基于@AndrasDeak评论的更优雅的解决方案:

^{pr2}$

另外请注意,python和MATLAB之间与索引相关的两个差异:Python是基于0的(即,数组的第一个索引是0,与MATLAB中的1不同)

Python中的索引是inclusive:exclusive,而MATLAB中的索引是inclusive:inclusive。在

因此,当我们想在MATLAB中访问向量的前3个元素时,我们可以写下:res = vec(1:3);

在Python中,我们可以写下:res = vec[0:3] # or [:3]

(同样,这一解释归功于@Andras)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值