如何在这种情况下在Matlab中使用全局变量

时间:2014-05-20 14:33:22

标签: matlab

我在https://www.lri.fr/~hansen/cmaes.m

上使用了CMA-ES优化程序

如果我定义一个函数

function y = myfun(x)
    y = (x(1)-1)^2+(x(2)-2)^2;
end

然后使用我可以使用的cmaes

function X = optimise(myfun)
    X = cmaes(myfun,[0 0]',3.0);
end

optimies('myfun')

找到最佳解决方案。

然而,如果我有这样的情绪:

function y = myfun(x)
    global a b;
    y = (x(1)-a)^2+(x(2)-b)^2;
end

function X = optimise()
    global a b;
    a = 10;
    b = 1;
    X = cmaes(myfun,[0 0]',3.0);
end

会有错误。

我认为这是因为cmaes函数没有全局定义。 但只是添加     全球的b 到cmaes.m不起作用

任何人都可以帮我解决这个问题吗?

0 个答案:

没有答案