在MATLAB中动态读取数组中的多个值

时间:2013-06-05 20:24:07

标签: arrays matlab dynamic

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

A([A.f1]==5) 

哪个会返回f1 = 5的所有记录 但是我想在一个循环中为几个不同的领域做这件事。我将字段名称保存在单元格数组中,但我不知道如何使用动态字段名称进行相同操作 我知道有'getfield'功能,但它只从一个结构中选择一个字段 有办法吗?
谢谢!

2 个答案:

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