Matlab中的并行函数运行
我试图用下面的简单代码进行测试,但错误是“输出参数太多” 主要是Matlab中的并行函数运行,matlab,parallel-processing,Matlab,Parallel Processing,我试图用下面的简单代码进行测试,但错误是“输出参数太多” 主要是 x = 0:0.01:10; y1 = sin(x); y2 = cos(x); funcs = {@func1, @func2} ; % let fun1, fun2 be two functions arguments = {x y1;x y2} ; % write the inputs of each function solutions = cell(1,2); % initia
x = 0:0.01:10;
y1 = sin(x);
y2 = cos(x);
funcs = {@func1, @func2} ; % let fun1, fun2 be two functions
arguments = {x y1;x y2} ; % write the inputs of each function
solutions = cell(1,2); % initialize the solution
% use of parfor
parfor ii = 1:2
solutions{ii}=funcs{ii}(arguments{ii,:});
end
请帮忙 调用函数的方式
solutions{ii}=funcs{ii}(arguments{ii,:});
需要一个输出,您正在将其分配给解决方案{ii}
这在普通循环中不起作用,甚至在没有循环的情况下也不起作用,您试图编写parfor
的事实在这里并不重要
您的函数定义为
function func1(x,y)
% ...
function func2(x,y)
% ...
这两个都没有输出参数,因此不清楚您希望为解决方案{ii}
分配什么-这与您看到的错误消息“输出参数太多”完全匹配
如果您希望从函数中得到一个输出,那么就声明一个
function z = func1(x,y)
z = x + y;
% other stuff
end
否则,不要在循环中请求输出
parfor ii = 1:2
funcs{ii}(arguments{ii,:});
end
函数没有输出参数,但函数调用有输出参数。(
solutions{ii}
)。你不能在parfor
循环中绘图。谢谢,@David你说得对,我应该创建输出变量或删除解决方案{}。@Cris Luengo,如果我想同时绘图或运行动画,我该怎么做?如果你有经验,请分享。
parfor ii = 1:2
funcs{ii}(arguments{ii,:});
end