我正在使用mksqlite从Matlab执行一些SQL:
myPeople = mksqlite('SELECT * from People');
在People表中有三行,myPeople将是一个3x1结构,包含三个1x1结构,每个结构都有id,name等字段。我想要的是一个包含三个id值的数组。
在Python中我会使用像这样的列表迭代器:
myIDs = person.id for person in myPeople
在Matlab中是否有类似的方法从该字段的结构数组中提取某个字段的所有值?
到目前为止,我所拥有的最好的是:
myIDs = []
for x = myPeople.'
myIDs = [myIDs x.id]
end
但这可能效率很低,因为它会在每次迭代时调整数组大小,对吧?
答案 0 :(得分:3)
myIDs = [myPeople.id]; %# nice shortcut syntax (horizontally concatenates)
myIDs = horzcat(myPeople.id); %# explicit way to horizontally concatenate
myIds = vertcat(myPeople.id); %# explicit way to vertically concatenate
有关结构和逗号分隔列表的进一步阅读,请参阅this link。