如何索引Octave中的单元数组类属性?

时间:2017-02-13 15:05:18

标签: octave

我有一个单元数组类属性:

classdef imageSet
    properties (SetAccess='protected', GetAccess='public')
        ImageLocation = {''}; % Image locations
    end
...

我想通过索引来访问它:

imgSet.ImageLocation{3}

但是我收到一条错误消息:无法对imageSet对象数组执行索引操作

然而

a = imgSet.ImageLocation
a{3}

工作正常。为什么,我该如何解决?

1 个答案:

答案 0 :(得分:0)

您必须拥有一组imageSet个对象。您可以使用

进行检查
size(imgSet)    % Will be something other than [1, 1] (a scalar)

a = imgSet.ImageLocation有效的原因是imgSet.ImageLocation创建了逗号分隔列表,而仅将第一个imgSet对象分配给a 。然后,第一个对象是标量imageSet对象,因此您可以无问题地索引到ImageLocation属性。

这可以通过以下方式证明

% Create an array of structs
a = struct('one', {1, 2, 3}, 'two', {4, 5, 6})

% Create a comma-separated list from the one field
b = a.one;

% See that only the element was used (a(1).one)
disp(b)
%   1

由于它是一个数组,因此您需要在编制索引之前访问特定的 imgSet对象

imgSet(1).ImageLocation{3};