gpt4 book ai didi

matlab - 是否可以使用 parfor 循环更改两个函数?

转载 作者:太空宇宙 更新时间:2023-11-03 19:58:20 26 4
gpt4 key购买 nike

假设我有两个函数写在不同的脚本上,比如 function1.mfunction2.m 这两个函数中的两个计算是独立的(一些输入可能是同样,例如说 function1(x,y)function2(x,z))。但是,按顺序运行,比如 ret1 = function1(x,y); ret2 = function2(x,z); 可能比较耗时。我想知道是否可以在 parfor 循环中运行它:

parfor i = 1:2
ret(i) = run(['function' num2str(i)]); % if i=1,ret(1)=function1 and i=2, ret(2)=function2
end

可否写在parfor循环中?

最佳答案

你的想法是对的,但是实现是错误的。

Matlab 不允许您在 parfor 中使用 run,因为它无法确保它是使用 parfor 的有效方式(即迭代之间没有依赖关系)。正确的方法是使用函数(而不是脚本)和 if 语句在它们之间进行选择:

ret = zeros(2,1);
parfor k = 1:2
if k==1, ret(k) = f1(x,y); end
if k==2, ret(k) = f2(x,z); end
end

这里的 f1f2 是一些返回标量值的函数(所以它适用于 ret(k) 和循环调用不同的 if 语句。

您可以在这里阅读更多关于 how to convert scripts to functions 的信息.

关于matlab - 是否可以使用 parfor 循环更改两个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45451331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com