声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2273|回复: 10

[编程技巧] 求助各位,关于复数排序的问题

[复制链接]
发表于 2007-1-19 12:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
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];
因为要处理的数比较多,所以请求各位高手帮助我一下,在这里先行谢过!
我自己尝试编了一个程序,但出来的排序结果只有实部了,下边是我的程序,供大家参考:
[B I]=srot(real(A))  %按实部大小从小到大排序
n=length(A);
i=1:n;
j=n:-1:1;
C(i,:)=B(j,:)   %从大到小排序
回复
分享到:

使用道具 举报

发表于 2007-1-19 13:07 | 显示全部楼层
原帖由 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进行排序,要求按实部 ...


  1. [B,I] = sort(real(A));
  2. A(I(end:-1:1))
复制代码

[ 本帖最后由 eight 于 2007-1-19 16:32 编辑 ]

评分

1

查看全部评分

发表于 2007-1-19 16:01 | 显示全部楼层
[B,I] = sort(real(A));
A(flipud(I))  %这个语句不是只把I上下掉转么?
发表于 2007-1-19 16:04 | 显示全部楼层
原帖由 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 编辑 ]
发表于 2007-1-19 16:29 | 显示全部楼层

回复 #4 eight 的帖子

呵呵 注意身体呀!

这天是容易感冒,多喝点水.注意休息.
发表于 2007-1-20 08:55 | 显示全部楼层
我刚想问这个问题,大家也想到了,嘿嘿,看来以后要先看一遍帖子啊
发表于 2007-1-20 09:31 | 显示全部楼层
我想到一个问题,如果是两列距阵,在对第一列进行排序时,原来对应的第二列也跟着变化,该如何做?
比如;
A=[5;8;3;2]
B=[3;4;6;1]
c=[A B]
排序后C距阵变化为
[2   1
3   6
5   3
8   4]
发表于 2007-1-20 09:58 | 显示全部楼层
想了一下,看了HELP,原来是这样可以解决
如;
X=[A1 A2];
[B,I]=sort(A1);%对A1排升序
Y=A2(I);%利用排序索引,对A2进行排列
Z=[B Y];%生成新距阵

评分

1

查看全部评分

发表于 2007-1-20 10:33 | 显示全部楼层
原帖由 attacker 于 2007-1-20 09:58 发表
想了一下,看了HELP,原来是这样可以解决
如;
X=;
=sort(A1);%对A1排升序
Y=A2(I);%利用排序索引,对A2进行排列
Z=;%生成新距阵


这个更简单:

  1. A=[5;8;3;2];
  2. B=[3;4;6;1];
  3. C=[A,B]
  4. sortrows(C)
复制代码

评分

1

查看全部评分

 楼主| 发表于 2007-1-20 12:21 | 显示全部楼层
感谢大家的帮助,在弱问一个问题,如果将复数存成文本文件,
在matlab里如何调用它呀!谢谢,祝大家身体健康
1:@)
发表于 2007-1-21 13:39 | 显示全部楼层
原帖由 xiaoshi509 于 2007-1-20 12:21 发表
感谢大家的帮助,在弱问一个问题,如果将复数存成文本文件,
在matlab里如何调用它呀!谢谢,祝大家身体健康
1:@)


可以作为两列实数分别存储或者读取
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-27 11:51 , Processed in 0.086486 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表