实数复数混合数据排序问题
我通过解方程,得到这样一个根矩阵r
r =
1.0e+004 *
Columns 1 through 6
0 + 0.0836i 0.0000 + 0.0907i 0.0000 + 0.1038i 0.0000 + 0.1170i 0.0000 + 0.1293i-0.0000 + 0.1408i
0 - 0.0836i 0.0000 - 0.0907i 0.0000 - 0.1038i 0.0000 - 0.1170i 0.0000 - 0.1293i-0.0000 - 0.1408i
0.0002 0.0353 0.0615 0.0819 -0.0987 -0.1133
-0.0002 -0.0353 -0.0615 -0.0819 0.0987 0.1133
0 + 0.0002i 0.0028 0.0069 0.0107 0.0144 0.0181
0 - 0.0002i-0.0028 -0.0069 -0.0107 -0.0144 -0.0181
Columns 7 through 12
-0.0000 + 0.1515i-0.0000 + 0.1615i-0.0000 + 0.1710i-0.0000 + 0.1801i-0.1692 -0.1783
-0.0000 - 0.1515i-0.0000 - 0.1615i-0.0000 - 0.1710i-0.0000 - 0.1801i 0.0000 + 0.1886i-0.0000 + 0.1969i
-0.1264 -0.1383 -0.1493 -0.1595 0.0000 - 0.1886i-0.0000 - 0.1969i
0.1264 0.1383 0.1493 0.1595 0.1692 0.1783
0.0218 0.0255 0.0292 0.0328 0.0365 0.0401
-0.0218 -0.0255 -0.0292 -0.0328 -0.0365 -0.0401
这是3对共轭根
我需要把大于0实根全部放在一行,小于0实根放在一行,对应大于0复根放一行,小于0复根放一行,请问可以如何实现。
我的算法
for num=1:6;
for cnt=1:12
tf(num,cnt)=isreal(r(num,cnt));
if((tf(num,cnt) ==0) &&(real(r(num,cnt))>0));
rs(1,cnt)=r(num,cnt);
elseif((tf(num,cnt) ==0) &&(real(r(num,cnt))<0));
rs(2,cnt)=r(num,cnt);
elseif((tf(num,cnt)==1) &&(real(r(num,cnt))>0));
rs(3,cnt)=r(num,cnt);
elseif(( tf(num,cnt)==1) &&(real(r(num,cnt))>0));
rs(4,cnt)=r(num,cnt);
elseif(( tf(num,cnt)==1) &&(real(r(num,cnt))<0));
rs(5,cnt)=r(num,cnt);
else(( tf(num,cnt)==1) &&(real(r(num,cnt))<0));
rs(6,cnt)=r(num,cnt);
end
end
end
这里面的问题,有两个实根,if没办法区分出怎么放,要怎么再判断一下,把较大的实根放一起?
不知道哪位可以指点一下,盼 比如想要>0的实根:
ix=real(r)>0;
a=r(ix)
就是逻辑运算 大于0实根:x(find(real(x)>0));
小于0实根:x(find(real(x)<0));
大于0虚根:x(find(imag(x)>0));
小于0虚根:x(find(imag(x)<0)); 回复 happy 的帖子
恩,是不是此处的find可以去掉呢? 本帖最后由 happy 于 2010-10-17 18:42 编辑
qibbxxt 发表于 2010-10-17 18:11 static/image/common/back.gif
回复 happy 的帖子
恩,是不是此处的可以去掉呢?
效果是一样的,个人习惯问题
另外,如果没有记错的话,matlab版本比较老的话是要加这个find的。
老版本应该没有你说的这个功能
回复 happy 的帖子
恩,是的,从效率的角度考虑,去掉是要快一些的
但是从直观的角度考虑,去掉不好理解,这是一对矛盾 本帖最后由 ChaChing 于 2010-10-18 08:54 编辑
happy应该没我年长, 但的确是个人习惯问题, 因我也习惯如此用!:lol
但还是谢谢qibbxxt提醒:handshake
有时直观与效率两者间的选择, 的确是一门艺术!
谢谢各位网友的提示,对于>0,和<0都好判断,关键〉0的有2个根,如何把较大的根放一起,把较小的实g根放一起 回复 wusemm 的帖子
判断大小的话,可以用sort排序,也可用max,min等 wusemm 发表于 2010-10-18 08:56 static/image/common/back.gif
谢谢各位网友的提示,对于>0,和
不知道你所谓的大小评判标准是什么?
页:
[1]