0

我有一系列结构。
我正在尝试从数组中选择几条符合某些条件的记录。
我知道有这个选项:(例如A带有字段的数组f1):

A([A.f1]==5) 

这将返回所有具有f1 = 5.
但我想在一个循环中为几个不同的领域做这件事。我将字段名称保存在单元格数组中,但我不知道如何对动态字段名称执行相同操作。
我知道有“getfield”功能,但它只从单个结构中选择一个字段。
有没有办法做到这一点?
谢谢!

4

2 回答 2

3

要动态访问结构的字段:

% Create example structure
s.a = 1;
s.b = 2;

% Suppose you retrieve the fieldnames (or hardcode them fnames = {'a','b'})
fnames = fieldnames(s);

您可以检索例如第二个:

s.(fnames{2})

在一个循环中

for f = 1:numel(fnames)
    s.(fnames{f})
end

在你的情况下:

A([A.(fnames{ii})] == n)
于 2013-06-05T20:41:47.587 回答
-1

此代码将遍历您的动态名称的前 5 条记录

for i=1:5
   eval(['A([A.' cell_array{i} ']==5)'])
end
于 2013-06-05T20:40:09.720 回答