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