我在 Octave 创建了一个单元格数组。有些列包含浮点数,有些列包含字符串。我可以使用以下命令按一列字符串对单元格数组进行排序(例如col#4):
sortrows (mycellarray, 4);
但是,如果要排序的列是浮点数列,则会收到此错误消息:
error: sort: only cell arrays of character strings may be sorted
有谁知道如何按浮点数对单元格数组进行排序?
最佳答案
将具有浮点值的列转换为向量,对其进行排序并获得排序索引。然后,您可以将此索引应用于单元格数组。
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,:);
但是,在某些版本的Octave中,未定义波浪号
~
运算符。在这种情况下:vector2sort = mycellarray(:,3);
[dummy,idx] = sort(vector2sort);
mycellarraysorted = mycellarray(idx,:);