이전에, 나는 다음과 같이 mutator를 구현했다. 그러나 나는 반복적 인 OO 알고리즘에서 놀랍도록 느리게 움직였다. 나는 모든 함수 호출에서 객체를 복제했기 때문에 그럴 것 같았다.Matlab에서 효율적인 인스턴스 변수 변경자를 만드는 방법은 무엇입니까?
%% 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