как Matlab выполняет сортировку?

Как 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

5
задан Amro 7 September 2010 в 21:56
поделиться