' subsref'的行为对于对象数组

时间:2015-05-14 11:57:33

标签: matlab override

想象一下简单的结构数组,比如说:

A = struct('x', {1 2 3}, 'y', {'a' 'b' 'c'});

要求所有这些数组元素的给定属性将提供如下内容:

>> A.x
ans =
     1
ans =
     2
ans =
     3

现在,如果我直接在这个数组上显式调用subsref函数,它只检索第一个元素的属性:

>> builtin('subsref', A, substruct('.', 'x'))
ans = 
     1

为什么呢?是否有可能明确调用另一个内置方法来检索所有数组元素的属性?

1 个答案:

答案 0 :(得分:3)

subsref方法可以返回它,但不能像在解释器中获取它一样comma separated list。它将它们作为单独的输出参数返回,表示:

>> [a,b,c]=builtin('subsref', A(:), substruct('.', 'x'))
a =
     1
b =
     2
c =
     3

如果您愿意,可以在单元格数组中捕获输出

>> [x{1:numel(A)}]=builtin('subsref', A(:), substruct('.', 'x'))
x = 
    [1]    [2]    [3]