发布网友 发布时间:2022-04-26 15:34
共2个回答
热心网友 时间:2023-10-12 04:06
可以尝试用 parfor 写入循环,也可以用 batch 命令进行批处理:
j = batch(fcn,N,{x1, ..., xn});具体操作可以参考帮助文档。
像这样的问题其实不用并行计算也可以的,有其它方法也可以加快速度,比如使用bsxfun函数,可以同时计算A,B,C中元素:
C = bsxfun(fun, A, B)像题主的程序中有四个同样的运算,就可以这样写:
C = bsxfun(SRD, SN,GD,DN,RN)其中 C 包含了四个元素,SN,GD,DN,RN分别为函数SDR 输入的第一、二、三、四个参数矩阵(向量)
热心网友 时间:2023-10-12 04:06
如果CPU利用率低,而计算慢的话,说明你的程序处理的数据量并不大,但是处理流程很复杂,里面肯定涉及了很多的类似于for循环的语句,使得程序的时间复杂度一下子就上去了。看了下面你的补充回答,好像和多核处理并行计算没关系的。虽然最新版的matlab支持这种运行方式,但感觉你似乎还用不到这么做。建议你还是优化一下你的算法。尽量减少for循环的次数,对于矩阵和向量运算,直接可以采用matlab现有的运算方法。追问我的SRD函数中使用for循环多次解微分方程和将数值代入结果的运算,这样的情况如何用矩阵简化呢?