我想把"a"作为全局变量传递给函数"tsfn",比如
function [ out ] = tsfn( )
global a;
out=a+1;
end
当我运行以下程序时,我得到了预期的结果:
>> global a;
a=1
out=[];
for i=1:4
out =[out tsfn()];
end
out
a =
1
out =
2 2 2 2
然而,如果我用parfor而不是for运行它,我最终会得到一个空向量。这让我相信"a"并没有被传递到函数中。我想知道是否有一种方法可以将变量作为全局变量传递给所有员工。
感谢
在我的平台上运行良好。试着重新启动你的计算机或Matlab。通常,"parfor"循环完成与"for"循环相同的任务——每个循环都是并行计算的。在一个或多个函数和/或基本工作区中声明"global"允许每个函数访问全局变量的内容,因此您的用法是正确的。
这是我的代码:
function[ out ] = tsfn()
global a;
out = a + 1;
end
EDU>> global a;
EDU>> a = 1;
EDU>> out = [];
EDU>> parfor i = 1 : 4
out = [ out tsfn() ];
end
EDU>> a
a =
1
EDU>> out
out =
2 2 2 2
此外,测试函数中变量内容的一个简单方法是删除分号,分号会将其打印到编辑器中。