0

我想从结构的多个字段中提取项目并将它们放在一个具有唯一应用的数组中。

假设结构具有以下格式:

A=repmat( struct('field1',[],'field2',[],'field3',[]) ,100,1);

要提取唯一字段 1 和字段 2,我可以这样写:

[a ia iar]=unique([A(:).field1]);
b=[A(:).field2];
b=b(ia);

我想写这样的东西:

[a ia iar]=unique([A(:).field1]);
b=[A(:).field2](ia);

但是 Matlab (2012a) 似乎不允许在声明时访问数组中的项目,尽管数组可以毫无问题地传递给函数。有没有办法做到这一点?

谢谢,

大卫

4

1 回答 1

0

尽管普通的 MATLAB语法不支持中间结果的嵌套索引,但正如 EitanT 的评论中指出的那样,有很多方法可以解决。

但是,在您的情况下,您不需要下面示例中所示的那些。您可以索引非标量结构:

% Example input and unique according to 'field1'
A       = struct('field1',num2cell(randi(20,100,1)),'field2',num2cell(randi(20,100,1)));
[~, ia] = unique([A(:).field1]);

% First assign
b1 = [A(:).field2];
b1 = b1(ia);

% Select directly
b2 = [A(ia).field2];

isequal(b1,b2) %ok
于 2013-05-16T19:05:34.270 回答