1
我遇到了严重的性能问题,即访问数组的(依赖)属性的单个值。看起来,当获得一个值时,属性的完整数组被返回,并在稍后索引。Matlab OOP:在数组属性上调用get函数时会发生什么?
在一个数组属性上调用get函数时会发生什么?
代码示例:
% class definition
classdef ArrayProp
properties
array
end
methods
function obj = ArrayProp(input)
obj.array = input;
end
function output = get.array(obj)
output = obj.array
numel(obj.array)
numel(output)
end
end
end
% test script
array = rand(2,1);
myArray = ArrayProp(array);
returnedValue = myArray.array(1)
% command window result
output =
0.6180
0.7304
ans =
2
ans =
2
returnedValue =
0.6180
请注意的是,输出的元素的数量是2
,但只1
值被返回到该变量。该实验使用Matlab2011b进行。
好的,谢谢!因此,访问单个值的另一种方法是通过索引,例如, 'function out = getArray(obj,ind); OUT = obj.array(IND); end'。或超载子参考... – JaBe
正确。我会去第一个版本 - 实现subsref可能是一个真正的痛苦。 – sebastian