想象一下一系列简单的结构,比如:

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

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

最佳答案

subsref方法可以返回它,但不能以在解释器中获取它的方式返回它将它们作为单独的输出参数返回,这意味着:

>> [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]

关于matlab - 对象数组的“subsref”行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30236807/

10-10 18:52