2012-01-23 21 views
6

Utworzono macierz komórek w Octave. Niektóre kolumny zawierają zmienne, a niektóre zawierają łańcuchy. Jestem w stanie posortować tablicę komórek przez kolumnę ciągów (powiedzmy kol # 4), używając komendy:Jak sortować tablicę komórek w Oktawie za pomocą kolumny pływaków?

sortrows (mycellarray, 4); 

Ale jeśli kolumna Chcę uporządkować przez to kolumna pływa, następnie pojawia się ten komunikat o błędzie:

error: sort: only cell arrays of character strings may be sorted 

Czy ktoś wie, jak posortować tablicę komórek za pomocą kolumny pływaków?

Odpowiedz

6

Konwertuj kolumnę z wartościami zmiennoprzecinkowymi na wektor, posortuj ją i uzyskaj indeks sortowania. Następnie możesz zastosować ten indeks do swojej tablicy komórek.

mycellarray = {'a',1,0.5; 'b',2,0.1; 'c',3,4.5; 'd',4,-3.2}; 
vector2sort=cell2mat(mycellarray(:,3)); 
[~,idx] = sort(vector2sort) 
mycellarraysorted = mycellarray(idx,:); 

W niektórych wersjach oktawy Jednakże operator tylda ~ nie jest zdefiniowana. W takim przypadku:

vector2sort = mycellarray(:,3); 
[dummy,idx] = sort(vector2sort); 
mycellarraysorted = mycellarray(idx,:); 
Powiązane problemy