给定一个都有字段foo的结构数组,是否有一种简单的方法来获取foo值的数组?

时间:2012-08-30 02:26:26

标签: arrays matlab iterator

我正在使用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

但这可能效率很低,因为它会在每次迭代时调整数组大小,对吧?

1 个答案:

答案 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