sort()如何在matlab中工作?
典纯MATLAB:
q是一个数组: matlab如何进行排序?
q = -0.2461 2.9531 -15.8867 49.8750 -99.1172 125.8438 -99.1172
49.8750 -15.8867 2.9531 -0.2461
q = sort(roots(q))
后,我得到了:
q = 0.3525 0.3371 - 0.1564i 0.3371 + 0.1564i 0.2694 - 0.3547i 0.2694 + 0.3547i 1.3579 - 1.7880i 1.3579 + 1.7880i 2.4410 - 1.1324i 2.4410 + 1.1324i 2.8365
嗯,似乎好工作!然后在python,我使用(q是与上述相同的,它是一个
np.array
):
import numpy as np
q = np.sort(np.roots(q))
而且我得到了:
[ 0.26937874-0.35469815j 0.26937874+0.35469815j 0.33711562-0.15638427j
0.33711562+0.15638427j 0.35254298+0.j 1.35792218-1.78801226j
1.35792218+1.78801226j 2.44104520-1.13237431j 2.44104520+1.13237431j
2.83653354+0.j ]
嗯...这两个结果,他们似乎不同种类不同,那么原因是什么?我做错了什么?先谢谢你!
我的回答:
def sortComplex(complexList):
complexList.sort(key=abs)
# then sort by the angles, swap those in descending orders
return complexList
然后调用它的Python代码,做工精细:P
尝试'根(q)' – Amro 2010-09-07 21:44:32
@Amro [ABS(根(q))argsort()]:不,不会工作 – serina 2010-09-07 22:35:32
我只是试了一下..(当然你需要导入正确的模块) – Amro 2010-09-07 22:54:46