2

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

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

4

1 回答 1

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

有关结构和逗号分隔列表的进一步阅读,请参阅此链接

于 2012-08-30T02:40:43.813 回答