我有一个复数列列表(大约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
答案 0 :(得分:6)
我不确定是否有内置操作,但我确实看到通过不使用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
我觉得看起来更干净。