【问题标题】:How to use a variable outside a PARFOR loop in MATLAB?如何在 MATLAB 的 PARFOR 循环外使用变量?
【发布时间】:2014-06-17 21:41:39
【问题描述】:

在 MATLAB 中,我有一个变量 proba 和一个 parfor loop,如下所示:

parfor f = 1:N
    proba      = (1/M)*ones(1, M);
    % rest of the code
end
pi_proba = proba;

MATLAB 说:“临时变量 'proba' 在 PARFOR 循环之后使用,但它的值是不确定的”

我不明白如何纠正这个错误。我需要使用并行循环,循环后需要proba。如何做到这一点?

【问题讨论】:

    标签: matlab parallel-processing parfor


    【解决方案1】:

    使用parfor 时,类根据these categories. 进行分类,确保每个变量都与这些类别之一匹配。对于proba 的非写入访问,广播变量将是最佳选择:

    proba      = (1/M)*ones(1, M);
    parfor f = 1:N
        % rest of the code
    end
    pi_proba = proba;
    

    在循环内写访问的情况下,切片变量是必要的:

    proba=cell(1,N)
    parfor f = 1:N
        %now use proba{f} inside the loop
        proba{f}=(1/M)*ones(1, M);
        % rest of the code
    end
    %get proba from whatever iteration you want
    pi_proba = proba{N};
    

    【讨论】:

      猜你喜欢
      • 2017-01-05
      • 2016-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多