我试图用下面的非常简单的代码进行测试,但是错误是“输出参数太多”。
function func1(x,y)
plot(x, y), xlabel('x'), ylabel('Sin(x)'), title('Sin(x) Graph'),
grid on, axis equal
end
function func2(x,y)
plot(x, y), xlabel('x'), ylabel('Cos(x)'), title('Cos(x) Graph'),
grid on, axis equal
end
主要是
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
请帮助!!!
答案 0 :(得分:1)
调用函数的方式
solutions{ii}=funcs{ii}(arguments{ii,:});
期望输出,您将分配给solutions{ii}
。
这在正常循环内甚至在没有循环的情况下都不起作用,在这里您尝试编写parfor
的事实并不重要...
您的函数定义为
function func1(x,y)
% ...
function func2(x,y)
% ...
这两个都不具有输出参数,因此不清楚您希望分配给solutions{ii}
的内容-这与您看到的“输出参数太多”的错误消息完全匹配。
如果您希望函数提供输出,请声明一个
function z = func1(x,y)
z = x + y;
% other stuff
end
否则,不要在循环内请求输出
parfor ii = 1:2
funcs{ii}(arguments{ii,:});
end