2010-04-26 82 views
4

如何在MATLAB中进行线程化?我想同时在两个变量上运行一个函数。我该怎么做?如何在MATLAB中进行线程化?

+3

@hai:请不要发表重复的问题。如果你之前的问题没有得到答案([管理员:现在这个问题]),那么你应该编辑它以使问题更清楚。 – gnovice 2010-04-26 15:26:31

回答

6

并行工具箱有一些工具可以帮助你。下面的一些例子从MATLAB粘贴帮助

matlabpool % Use default parallel configuration 
spmd   % By default uses all labs in the pool 
    INP = load(['somedatafile' num2str(labindex) '.mat']); 
    RES = somefun(INP); 
end 

随后的RES对实验室的值是从实验室2实验室1,RES{2}从客户端为RES{1}访问等

您也可以看看在parfor作为简单的并行替换for。希望这有助于即使它不是你正在寻找的东西。

+0

在R2015a中matlabpool函数已经从Matlab中移除,您需要调用parpool代替。 – hmfarimani 2017-03-06 13:43:11

1

我不相信有任何内置的MATLAB多线程支持。 这来自我最近与同事的一次谈话,以及一个quick google search

希望这会有所帮助。

+1

是的。这是使用Matlab来生产生产应用程序的问题之一。 – mmr 2010-04-26 15:18:18

+1

越来越多的Matlab原生函数是多线程的,每个新版本都利用了多核CPU。但像Matlab这样的工具的整个哲学反对给用户动手访问线程等。 – 2010-04-26 15:47:59

+2

从Matlab的帮助:有一个“隐式多处理”,它使用内置的多线程函数或“显式多处理”,你必须使用并行计算工具箱。 – Adrien 2010-04-26 16:36:17

0

您可以使用MEX文件和std::thread(请参阅here)。

我还没有试过从MEX文件中调用mexEvalString,很可能会导致运行时错误或冻结MATLAB执行时间。但是,如果你可以用C++编写特定的代码片段,那可能就是你想要的。