Arrays matlab中结构数组的排序
我有一个包含两个字段“word”和“number”的结构,需要找到一种方法为具有相同编号的所有元素创建新的结构数组。 strucure阵列的一个示例可以是:Arrays matlab中结构数组的排序,arrays,matlab,Arrays,Matlab,我有一个包含两个字段“word”和“number”的结构,需要找到一种方法为具有相同编号的所有元素创建新的结构数组。 strucure阵列的一个示例可以是: a=struct('word',{'meercat','window','lemon','dog','cheese','penguin'},'number',{4,2,2,2,2,1}) 我正在尝试将结构拆分为相同数字的单词的单独数组,例如: a1=struct('word',{'meercat'},'number',{4}) a2=st
a=struct('word',{'meercat','window','lemon','dog','cheese','penguin'},'number',{4,2,2,2,2,1})
我正在尝试将结构拆分为相同数字的单词的单独数组,例如:
a1=struct('word',{'meercat'},'number',{4})
a2=struct('word',{'window','lemon','dog','cheese'},'number',{2,2,2,2})
a2=struct('word',{'penguin'},'number',{1})
提取数字并使用逻辑索引:
a = struct('word' , {'meercat','window','lemon','dog','cheese','penguin'}, ...
'number', {4,2,2,2,2,1})
% extract numbers
num = [a(:).number]
% indexing
a1 = a(num == 4)
a2 = a(num == 2)
a3 = a(num == 1)
您可以将其自动化:
sortedStructs = arrayfun(@(x) a(num == x), unique(num),'uni',0)
它返回一个单元格数组,每个数字有一个结构:
sortedStructs{1} =
word: 'penguin'
number: 1
sortedStructs{2} =
1x4 struct array with fields:
word
number
sortedStructs{3} =
word: 'meercat'
number: 4
如果要保持原始顺序,请将
'stable'
属性添加到unique
:unique(num,'stable')