我是一个新的Matlab用户,我对结构有一些疑问。
我的情况是:
我有一个结构P1,它有3个“子结构”(A1,A2,A3),有两个字段(名称和年龄),我想按年龄对我的“子结构”进行排序。所以,我有它:
P1.A1.age = 33
P1.A2.age = 23
P1.A3.age = 31
我想要这个结果:
P1.A2.age = 23
P1.A3.age = 31
P1.A1.age = 33
有什么想法吗?
我尝试使用函数orderfields,但我没有得到我想要的结果。
谢谢!!!
答案 0 :(得分:1)
首先使用sort
和structfun
获取排序所需的排列。然后使用orderfields
:
[~, I] = sort(structfun(@(x) x.age, P1));
P1 = orderfields(P1, I);
答案 1 :(得分:0)
这对你有用吗?
>> [val idx]=sort(arrayfun(@(x) P1.(sprintf('A%d',x)).age,1:3))
val =
23 31 33
idx =
2 3 1