2015-05-31 45 views
0

我有一列複數的數列(約200k長)。我想切換所有的真實和虛擬的部分。我很確定我可以做一個單一的乘法來實現這一點,但我無法在網上找到一個公式。這是到目前爲止,我已經找到了最好的方式,但它是我的需求太慢(它需要運行實時):matlab切換複數和實數部分的一個數

>> 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 

回答

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 

,我覺得看起來更加簡潔。

相關問題