matlab 切换数字的复数部分和实数部分

问题描述 投票:0回答:2

我有一个复数列列表(大约 200k 长)。我想交换所有的实部和虚部。我很确定可以通过一次乘法来完成此任务,但我在网上找不到公式。这是迄今为止我发现的最好的方法,但它对于我的需求来说太慢了(它需要实时运行):

>> vec = [complex(1,11);complex(2,22);complex(3,33)]

vec =

   1.0000 +11.0000i
   2.0000 +22.0000i
   3.0000 +33.0000i

>> complex(imag(vec),real(vec))

ans =

  11.0000 + 1.0000i
  22.0000 + 2.0000i
  33.0000 + 3.0000i
matlab complex-numbers
2个回答
7
投票

我不确定是否有内置操作,但我确实看到不使用

complex
功能会提高速度:

>> imag(vec) + real(vec)*1i
ans =
  11.0000 + 1.0000i
  22.0000 + 2.0000i
  33.0000 + 3.0000i

还有这样

>> conj(vec)*1i
ans =
  11.0000 + 1.0000i
  22.0000 + 2.0000i
  33.0000 + 3.0000i

我觉得看起来干净多了。


0
投票

简单地乘以-i,即:

vec = vec*-1.0i
© www.soinside.com 2019 - 2024. All rights reserved.