我有一系列结构
我正在尝试从阵列中选择几个符合某些条件的记录
我知道有这个选项:(例如,数组A
包含字段f1
):
A([A.f1]==5)
哪个会返回f1 = 5
的所有记录
但是我想在一个循环中为几个不同的领域做这件事。我将字段名称保存在单元格数组中,但我不知道如何使用动态字段名称进行相同操作
我知道有'getfield'功能,但它只从一个结构中选择一个字段
有办法吗?
谢谢!
答案 0 :(得分: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)
答案 1 :(得分:-1)
此代码将贯穿动态名称的前5个记录
for i=1:5
eval(['A([A.' cell_array{i} ']==5)'])
end