我有一组数据点,它们是复数,它们有8行6列。如果你看看这个程序,你可以看到数据集是非常随机排列的。第1,2,3列没问题,但是第4列有点异常。我的意思是说,在B(5,4)的元素(即25.9868674011374)之后它来到2.74257567017122 [B(6,4)],而不是26.8410063269595已经到B(6,6)。我希望该列按升序排列(每个排序都应该为实际部分完成)。而且,在第5列中,即使真实部分ae按升序排列,虚部也是交换的。例如,在B(2,5)之后它应该是B(3,6)而不是B(3,5)。我尝试了'排序'命令,但它不能按我的要求工作。在MATLAB中用虚数部分对复数数组元素排序
对于谁是想知道西隧是有某种实际问题的人,只是试图运行这个命令:
A = [1+2i 3+i i 0 -i]; Dreal= sort(real(A)); Dimg = sort(imag(A));D=[Dreal;Dimg];
我要的是-i,0,I,3 + 1,1 + 2 1,什么样的产品是别的。
此外,可能会出现第4,5和6列可能“正常”表现的情况,但第1,2,3列的行为不正常。因此,即使第4,5,6列的行为“正常”,我也希望它按升序排序。任何方式通过这个?由此,我使用Matlab-2015b。代码是:
clear all; clc;
B=[-2.14981736484179 + 0.00000000000000i,-1.38134547606946 + 0.00000000000000i,1.38451324569297 + 0.00000000000000i,22.5759136576435 + 0.00000000000000i,2.28536796878740 + 0.333911501246080i,2.28536796878740 - 0.333911501246080i;-2.22047322414157 + 0.00000000000000i,-1.43596350944258 + 0.00000000000000i,1.43889226552228 + 0.00000000000000i,23.4278498788255 + 0.00000000000000i,2.39484729461819 + 0.303429715954385i,2.39484729461819 - 0.303429715954385i;-2.29148887606605 + 0.00000000000000i,-1.49057388951113 + 0.00000000000000i,1.49328382360683 + 0.00000000000000i,24.2803021611395 + 0.00000000000000i,2.50423839041542 - 0.265225265037282i,2.50423839041542 + 0.265225265037282i;-2.36284412024645 + 0.00000000000000i,-1.54517861014711 + 0.00000000000000i,1.54768832224205 + 0.00000000000000i,25.1333019698605 + 0.00000000000000i,2.61351621914550 + 0.215386193278572i,2.61351621914550 - 0.215386193278572i;-2.43451884781340 + 0.00000000000000i,-1.59977935450756 + 0.00000000000000i,1.60210590260749 + 0.00000000000000i,25.9868674011374 + 0.00000000000000i,2.72266244928806 - 0.142395604889199i,2.72266244928806 + 0.142395604889199i;-2.50649346218904 + 0.00000000000000i,-1.65437753673930 + 0.00000000000000i,1.65653651325774 + 0.00000000000000i,2.74257567017122 + 0.00000000000000i,2.92075248853987 + 0.00000000000000i,26.8410063269595 + 0.00000000000000i;-2.57874914363635 + 0.00000000000000i,-1.70897433922564 + 0.00000000000000i,1.71097996266870 + 0.00000000000000i,2.74509085049068 + 0.00000000000000i,3.13593380433481 + 0.00000000000000i,27.6957188653678 + 0.00000000000000i;-2.65126800477853 + 0.00000000000000i,-1.76357074549849 + 0.00000000000000i,1.76543595943333 + 0.00000000000000i,2.78382099280761 + 0.00000000000000i,3.31458248082037 + 0.00000000000000i,28.5509993172157 + 0.00000000000000i];
k=1:1:4;
B1=sort(real(B));
B2=sort(imag(B));
B3=sort(B);
在此先感谢。
+1
首先排序'I'排序的矢量。 ''[〜,I] = sort(imag(A)); result = A(I)' –
+0
你说过每一个排序都应该用于实部,但是你的例子是用虚数值排序的。所以你想要什么? –
+0
@ rahnema1请添加它作为答案,因为它似乎是OP正在寻找的答案。 –