以前,我實現了存取器如下,但是它跑壯觀慢慢遞歸算法OO我的工作,我懷疑這可能是因爲我對每一個函數調用複製對象......這是正確的?如何在Matlab中創建高效的實例變量mutators?
%% Example Only
obj2 = tripleAllPoints(obj1)
obj.pts = obj.pts * 3;
obj2 = obj1
end
然後,我嘗試不使用輸出對象實現存取器......然而,似乎在MATLAB我不能做到這一點 - 這些變化將不是「大棒」,因爲範圍的問題嗎?
%% Example Only
tripleAllPoints(obj1)
obj1.pts = obj1.pts * 3;
end
對於應用目的,我的代碼極其簡化版本(其使用OO和遞歸)低於。
classdef myslice
properties
pts % array of pts
nROW % number of rows
nDIM % number of dimensions
subs % sub-slices
end % end properties
methods
function calcSubs(obj)
obj.subs = cell(1,obj.nROW);
for i=1:obj.nROW
obj.subs{i} = myslice;
obj.subs{i}.pts = obj.pts(1:i,2:end);
end
end
function vol = calcVol(obj)
if obj.nROW == 1
obj.volume = prod(obj.pts);
else
obj.volume = 0;
calcSubs(obj);
for i=1:obj.nROW
obj.volume = obj.volume + calcVol(obj.subs{i});
end
end
end
end % end methods
end % end classdef