我有一个单元数组类属性:
classdef imageSet
properties (SetAccess='protected', GetAccess='public')
ImageLocation = {''}; % Image locations
end
...
我想通过索引来访问它:
imgSet.ImageLocation{3}
但是我收到一条错误消息:无法对imageSet对象数组执行索引操作
然而
a = imgSet.ImageLocation
a{3}
工作正常。为什么,我该如何解决?
答案 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};