[討論] 複數向量,如何按照此形式做大小的排列?

看板MATLAB作者 (阿泰斯)時間11年前 (2013/12/30 12:45), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
有一複數向量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
文章代碼(AID): #1ImFfyzk (MATLAB)
文章代碼(AID): #1ImFfyzk (MATLAB)