求助各位,关于复数排序的问题
A=[-0.99422-0.49262 + 0.78952i
-0.49262 - 0.78952i
0.17653 + 0.83857i
0.17653 - 0.83857i
0.74378 + 0.47136i
0.74378 - 0.47136i
0.72608];
对列向量A进行排序,要求按实部的大小从大到小进行排序,
即排出的结果应该是这样的:
A=[0.74378 + 0.47136i
0.74378 - 0.47136i
0.72608
0.17653 + 0.83857i
0.17653 - 0.83857i
-0.49262 + 0.78952i
-0.49262 - 0.78952i
-0.99422];
因为要处理的数比较多,所以请求各位高手帮助我一下,在这里先行谢过!
我自己尝试编了一个程序,但出来的排序结果只有实部了,下边是我的程序,供大家参考:
=srot(real(A))%按实部大小从小到大排序
n=length(A);
i=1:n;
j=n:-1:1;
C(i,:)=B(j,:) %从大到小排序 原帖由 xiaoshi509 于 2007-1-19 12:04 发表
A=[-0.99422
-0.49262 + 0.78952i
-0.49262 - 0.78952i
0.17653 + 0.83857i
0.17653 - 0.83857i
0.74378 + 0.47136i
0.74378 - 0.47136i
0.72608];
对列向量A进行排序,要求按实部 ...
= sort(real(A));
A(I(end:-1:1))
[ 本帖最后由 eight 于 2007-1-19 16:32 编辑 ] = sort(real(A));
A(flipud(I))%这个语句不是只把I上下掉转么? 原帖由 lxq 于 2007-1-19 16:01 发表
= sort(real(A));
A(flipud(I))%这个语句不是只把I上下掉转么?
唉,都是感冒惹的祸,呵呵,应该是A(I(end:-1:1))才对,再次糊涂了,谢谢lxq提醒
[ 本帖最后由 eight 于 2007-1-19 16:32 编辑 ]
回复 #4 eight 的帖子
呵呵 注意身体呀!这天是容易感冒,多喝点水.注意休息. 我刚想问这个问题,大家也想到了,嘿嘿,看来以后要先看一遍帖子啊 我想到一个问题,如果是两列距阵,在对第一列进行排序时,原来对应的第二列也跟着变化,该如何做?
比如;
A=
B=
c=
排序后C距阵变化为
[2 1
3 6
5 3
8 4] 想了一下,看了HELP,原来是这样可以解决
如;
X=;
=sort(A1);%对A1排升序
Y=A2(I);%利用排序索引,对A2进行排列
Z=;%生成新距阵 原帖由 attacker 于 2007-1-20 09:58 发表
想了一下,看了HELP,原来是这样可以解决
如;
X=;
=sort(A1);%对A1排升序
Y=A2(I);%利用排序索引,对A2进行排列
Z=;%生成新距阵
这个更简单:
A=;
B=;
C=
sortrows(C)
感谢大家的帮助,在弱问一个问题,如果将复数存成文本文件,
在matlab里如何调用它呀!谢谢,祝大家身体健康
1:@) 原帖由 xiaoshi509 于 2007-1-20 12:21 发表
感谢大家的帮助,在弱问一个问题,如果将复数存成文本文件,
在matlab里如何调用它呀!谢谢,祝大家身体健康
1:@)
可以作为两列实数分别存储或者读取
页:
[1]