我有一个句柄类:

classdef A<handle


    properties
        a;
    end

    methods
        function obj = A(a)
            obj.a=a;
        end
    end
end

我有一个A对象的单元格数组:
arr={};
for i=1:3
    arr{i}=A(i);
end

我想做的就是将该单元格数组传递给parfor循环,以便每个对象的值都将改变:
parfor i=1:3
    arr{i}.a=i*5;
end

但是,此代码完全不会更改arr。的确,here指出



我该如何克服呢?

最佳答案

一个有趣的问题;我实际上从未遇到过这个问题。知道有关parfor限制的所有信息总是很高兴,所以我做了一些googlin'并提出了this:



实例对象由以下位置给出

classdef Example < handle

    properties
        data
    end

    methods
        function obj = Example(data)
            obj.data = data;
        end

        function setData(obj,data)
            obj.data = data;
        end

        function data = getData(obj)
            data = obj.data;
        end
    end
end

并将数组简单地初始化为
% Initialise array of objects
for n = 1:num
    exArray(n) = Example(zeros(1,6));
end

关于matlab - parfor和处理类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12200236/

10-10 16:55