以下代码:
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
有关如何使用我的程序正在使用的单元格的数据结构类型修复它的任何建议或想法?热烈欢迎所有评论!
答案 0 :(得分:1)
每the documentation(以及错误消息):
当direction
是单元格数组时,
A
不受支持,即仅sort
按升序排序。
您可以使用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