字符串:降序排序 - 元胞数组

string: descend sorting - cell array

对于以下代码:

country(1).name='USA';
country(2).name='Spain';
country(3).name='France';
% descending order
[~,index]=sort({country.name},'descend');
country=country(index);
for i=1:3
    fprintf('name = %s\n',  country(i).name)
end

我在对单元格(如字符串名称)按降序排序时出现以下奇怪错误:

Error using sort
DIM and MODE arguments not supported for cell arrays.
Error in sandbox (line 43)
[~,index]=sort({country.name},'descend');

如果是升序,它对字符串工作得很好,对于数值,它适用于升序和降序排序。

根据我搜索 online 和尝试的内容,语法应该是有效的。但它不仅适用于按降序排列的字符串。

降序输出应如下所示:

name = USA
name = Spain
name = France

关于如何针对我的程序正在使用的单元格的数据结构类型修复它的任何建议或想法?热烈欢迎所有评论!

根据 the documentation(和错误消息):

direction is not supported when A is a cell array, that is, sort only sorts in ascending order.

您可以使用 flip 解决此问题:

country(1).name='USA';
country(2).name='Spain';
country(3).name='France';
% descending order
[~,index]=sort({country.name});
country=flip(country(index));
for i=1:3
    fprintf('name = %s\n',  country(i).name)
end

打印:

name = USA
name = Spain
name = France