matlab中如何使用并行运算进行多行语句同时运行 30
程序中有多条互不影响的语句,但是都是在调用统一个函数,按顺序逐条进行时间过长,如果能利用多核心并行运算可以节约很多时间,求问matlab中如何实现这种想法?就是这种形式的...
程序中有多条互不影响的语句,但是都是在调用统一个函数,按顺序逐条进行时间过长,如果能利用多核心并行运算可以节约很多时间,求问matlab中如何实现这种想法?
就是这种形式的程序:
S_NH4R = SRD(S_NH4(t),GD,D_NH4,Ri_NH4(t)) ;
S_NO2R = SRD(S_NO2(t),GD,D_NO2,Ri_NO2(t)) ;
S_NO3R = SRD(S_NO3(t),GD,D_NO3,Ri_NO3(t)) ;
S_SR = SRD(S_Ss(t),GD,D_S_S,Ri_Ss(t)) ; 展开
就是这种形式的程序:
S_NH4R = SRD(S_NH4(t),GD,D_NH4,Ri_NH4(t)) ;
S_NO2R = SRD(S_NO2(t),GD,D_NO2,Ri_NO2(t)) ;
S_NO3R = SRD(S_NO3(t),GD,D_NO3,Ri_NO3(t)) ;
S_SR = SRD(S_Ss(t),GD,D_S_S,Ri_Ss(t)) ; 展开
2个回答
2018-12-25
展开全部
可以尝试用 parfor 写入循环,也可以用 batch 命令进行批处理:
j = batch(fcn,N,{x1, ..., xn});
wait(j) % Wait for the job to finish
diary(j) % Display the diary
r = fetchOutputs(j); % Get results into a cell
arrayr{1} % Display resul
具体操作可以参考帮助文档。
像这样的问题其实不用并行计算也可以的,有其它方法也可以加快速度,比如使用bsxfun函数,可以同时计算A,B,C中元素:
C = bsxfun(fun, A, B)
像题主的程序中有四个同样的运算,就可以这样写:
C = bsxfun(SRD, SN,GD,DN,RN)
其中 C 包含了四个元素,SN,GD,DN,RN分别为函数SDR 输入的第一、二、三、四个参数矩阵(向量)
展开全部
追问
我的SRD函数中使用for循环多次解微分方程和将数值代入结果的运算,这样的情况如何用矩阵简化呢?
每次for循环中有一次如下这种解方程,须循环约50次,并须将较多数值代入结果
SR1 = diff(SR) ;
SR2 = diff(SR,2) ;
SR = dsolve ( SR2==c-((2/r)*SR1) ,SR1(10^(-6))==0,SR(r_max)==S,r) ;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询