Как sort () работает в Matlab?
Код в чистом Matlab:
q - это массив:
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 (корни (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