基于Simulink模型的Matlab并行计算

基于Simulink模型的Matlab并行计算,matlab,parallel-processing,simulation,simulink,parfor,Matlab,Parallel Processing,Simulation,Simulink,Parfor,我正在做一个项目,并行计算将是一个巨大的优势。该项目模拟多个Simulink模型。我用一个普通的for循环进行了模拟,但由于模拟需要几天时间,我决定尝试“parfor”-循环 但问题就从这里开始。首先,我将为您提供我的代码、工作区和导致我出现问题的Simulink部分的图片: 这是我的密码: 令人困惑的是,如果我删除该列: SimOut(k) = sim(House(k).model_name); 代码工作正常->模型参数在parfor循环中设置 但如果不删除该列,则会出现以下错误: 使

我正在做一个项目,并行计算将是一个巨大的优势。该项目模拟多个
Simulink
模型。我用一个普通的for循环进行了模拟,但由于模拟需要几天时间,我决定尝试
“parfor”-循环

但问题就从这里开始。首先,我将为您提供我的代码、工作区和导致我出现问题的
Simulink部分的图片:

这是我的密码: 令人困惑的是,如果我删除该列:

 SimOut(k) = sim(House(k).model_name);
代码工作正常->模型参数在
parfor循环中设置

但如果不删除该列,则会出现以下错误:

使用Forerunsimple时出错(第9行)

错误评估“模型屋”中的参数“数据结构”


如图所示,变量
“GlobalData”
是在工作区中定义的。所以在我看来,这应该是可行的。显然不是。你知道可能是什么问题吗?

你可能想看看这个问题,嗯,它是相关的,事实上可能是同一个问题:

即使定义了工作空间全局变量,该变量也显示为空

用户提供了一个链接和一个简短的解释,说明全局变量不会传递给worker(例如并行运行的simulink)

链接到以下博客条目:“启动并运行parfor循环”:

嗨,Elias,欢迎来到SO!你做的很好,但是你必须考虑把代码作为文本在你的问题,而不是作为截图!谢谢你的帮助:)当然以文本形式发布代码更有意义,我会记住这一点。我对SO和Matlab Simulink编码相当陌生,所以请原谅我对某些事情的无知:)是的,当然,对我来说没问题。这里的老员工应该帮助新员工。但要知道,有些人很强硬。不要把冒犯当成个人的事。谢谢亨里克,我会读这个问题的。但实际上我没有使用全局变量。起初我试过,但我认为这是个坏主意。所以“GlobalData”只是一个普通的结构,里面有数据数组。有趣的是我可以访问parfor循环中的GlobalData文件。例如,我可以在parfor循环中使用“fprintf”来显示数据。但是,如果模拟想要访问parfor循环中的GlobalData,则会出现错误:/我刚刚读了这篇文章,我认为这完全不是同一个问题:/我甚至可以使用parfor循环中的数据生成一个变量,但它不起作用。这里有一个简化的代码示例:>parfori=1:20 Temp=load('someData.mat')set_param(model,'Data_cons','Temp')simout=sim(model)end,因为某种原因,模型找不到Temp变量…好吧,以前从未见过,而且目前没有使用simulink许可证安装matlab,因此(没问题。这里有一个新问题的链接,简化了:
 SimOut(k) = sim(House(k).model_name);
Caused by:

    Error using parallel_function>make_general_channel/channel_general (line 907)
    Error evaluating parameter 'Data_cons' in 'model_house_14/House'
    Error using parallel_function>make_general_channel/channel_general (line 907)
    Undefined variable "GlobalData" or class "GlobalData".