如何在MATLAB的parfor文件夹中加载.mat文件

时间:2017-11-19 17:10:36

标签: matlab parallel-processing

我想在MATLAB中使用以下代码运行parfor循环

B=load('dataB.mat'); % B is a 1600*100 matrix stored as 'dataB.mat' in the local folder
simN=100;
cof=cell(1,simN);
se=cell(1,simN);
parfor s=1:simN  
    [estimates, SE]=fct(0.5,[0.1,0.8,10]',B(:,s));
    cof{s}=estimates';
    se{s}=SE';
end

然而,代码似乎不起作用 - 没有警告,它只是在没有任何输出的情况下永远运行 - 我终止循环并发现它从未进入函数' fct'。任何帮助将不胜感激如何加载外部数据,如' dataB.mat'在MATLAB的并行计算中?

1 个答案:

答案 0 :(得分:1)

如果我在我的控制台上输入此内容:

dataB.mat

然后我将当前工作区保存为B = load('dataB.mat'); ,此命令:

ans

将为我带来一个包含B字段的1 x 1结构作为1600x100双矩阵。因此,因为在应用程序的每个循环中,必须在调用函数fct之前提取B列(提取的列成为调用的第三个参数,并且必须在传递之前定义它)。 ..我想知道在继续进行parfor循环之前,您是否没有使用断点检查parfor变量组合。

另外,请记住,第一次使用全新的Matlab实例执行for循环时,Matlab引擎必须实例化所有工作人员......这可能需要很长时间。请耐心等待,并最终进行第二次测试,以确定一旦确定工人已经实例化,问题是否仍然存在。

如果这些不是您问题的原因,我建议您运行标准循环(parfor而不是NaN)并在您的迭代的第一行设置断点。这应该可以帮助您快速发现问题。