3

プログラムに getter/setter メソッドを追加するだけで、プログラムが非常に遅くなります。これについて何か説明はありますか?

function set.x(obj,newx)
    obj.x = newx;
end

function x = get.x(obj)
    x = obj.x;             
end

それが、ハンドル クラスの下でそれらを定義する方法です。それとも、それらを正しく実装していませんか?

編集

クラス定義は...

classdef sensorlocest < handle

    properties(GetAcess = 'public', SetAccess = 'private')
        sensorId; % sensor id
        X; % true x-coordainate
        Y; % true y-coordinate

        x; % estimate of X
        y; % estimate of Y
    end

    methods
        function sesnors = sensorlocest(x,y)
            if nargin ~= 0
               sesnors(49,1) =  sensorlocest;
               for k = 1:length(sensors)
                   sensors(k).sesnorId = k;
                   sensors(k).X = x.*rand;
                   sensors(k).Y = y.*rand;
               end
        end


        function init(sensors,x,y)
            N = length(sensors);
            for i = 1:N
                sensors(i).x = x.*rand;
                sensors(i).y = y.*rand;
            end
        end

        function set.x(sensors,newx) 
            sensors.x = newx; 
        end 

        function set.y(sensors,newy) 
            sensors.y = newy;              
        end 
    end
end
4

1 に答える 1

2

いいえ、あなたは正しいです。確かにオーバーヘッドがあります。次のスレッドを確認してください: Is MATLAB OOP slow or am I doing something wrong?

于 2012-08-27T10:24:55.157 に答える