[討論] 複數向量,如何按照此形式做大小的排列?
有一複數向量B,想按照向量C的大小做排列,但是排列完輸出要以B的值,其中A、B、C
如下:
B =[1;3;2i;1i;1+2i;1-2i];
C=zeros(length(B),1);
for ii=1:length(B)
if imag(B(ii))~=0 && real(B(ii))==0
C(ii)=-imag(B(ii));
elseif imag(B(ii))>0 && real(B(ii))~=0
C(ii)=-abs(B(ii));
elseif imag(B(ii))<0 && real(B(ii))~=0
C(ii)=-abs(B(ii))-1e-10;
else
C(ii)=B(ii);
end
end
也就是說,純虛數當成取出虛部後(去掉i)加上負號,純實數不變,複數則會成對出現,
故複數的虛部大於0時,取絕對值加上負號,複數的虛部小於0時,取絕對值加上負號減掉
1e-10,其向量會如下:
B=[1;3;2i;1i;1+2i;1-2i];
C=[1;3;-2;-1;-2.236;-2.236];
而把C排列後:
C=[-2.236;-2.236;-2;-1;1;3]
最後我想要輸出的是:
B=[1-2i;1+2i;2i;1i;1;3]
也就把B按照C的值的大小做排列後,輸出B的值
請問Matlab有辦法做到這樣嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.130.17.253
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章