颜文斌 发表于 2014-5-31 13:12:31

matlab 并行计算中使用全局变量就会报错,总是一些很奇怪的错误

比如某一个变量取不到值之类。怎么回事?

石光 发表于 2014-6-1 14:23:41

你可以看matlab的帮助文档里面的Passing Extra Parameters这一节,讲了有三种方法给优化的目标函数传递独立变量,要用并行的话不能使用全局变量的方法,可以采用匿名函数的方法。Write an M-file containing the following code:function y = parameterfun(x,a,b,c)y = (a - b*x(1)^2 + x(1)^4/3)*x(1)^2 + x(1)*x(2) + ...(-c + c*x(2)^2)*x(2)^2;Assign values to the parameters and define a functionhandle f to an anonymous function by entering thefollowing commands at the MATLAB prompt:a = 4; b = 2.1; c = 4; % Assign parameter valuesx0 = ;f = @(x)parameterfun(x,a,b,c)Call the solver fminunc withthe anonymous function: = fminunc(f,x0)f就是已经传递了独立变量的目标函数的函数句柄上面的例子是用 fminunc求解的,用ga也一样

谭帼馨 发表于 2014-6-1 20:02:24

dimension表示 维数,能用全局变量,a(0)无效 表示没有保存好数据,耐心点,再看看?……

颜文斌 发表于 2014-6-1 20:03:04

有一个前提是,我把代码从for 直接改成parfor。for 语句,使用serial 计算就没问题。我现在倒是找到解决方法了,直接保存成文件,然后再子函数里读文件,就不用全局变量了,倒是可以,运行效率下降的比较多。
页: [1]
查看完整版本: matlab 并行计算中使用全局变量就会报错,总是一些很奇怪的错误