作者candy88257 (阿泰斯)
看板MATLAB
标题[讨论] 复数向量,如何按照此形式做大小的排列?
时间Mon Dec 30 12:45:45 2013
有一复数向量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