【发布时间】:2012-04-28 14:40:31
【问题描述】:
我正在尝试使用遗传算法优化大约 10 个参数。我需要将主函数中参数的中间值传递给另一个函数,该函数基本上是线性 ODE 系统的 ODE 求解器,参数作为微分方程中的系数。然后,我会将 ODE 的解决方案返回到我试图最小化的主函数中。我尝试将变量声明为全局变量,但似乎没有帮助。请告知如何最好地在两个函数之间传递变量。
【问题讨论】:
标签: matlab
我正在尝试使用遗传算法优化大约 10 个参数。我需要将主函数中参数的中间值传递给另一个函数,该函数基本上是线性 ODE 系统的 ODE 求解器,参数作为微分方程中的系数。然后,我会将 ODE 的解决方案返回到我试图最小化的主函数中。我尝试将变量声明为全局变量,但似乎没有帮助。请告知如何最好地在两个函数之间传递变量。
【问题讨论】:
标签: matlab
不确定这是否是最好的方法,但我认为它应该有效。您可以尝试将它们包装在句柄类中,然后将其作为对象传递。
classdef yourClass < handle
properties
v1;
v2;
end
end
然后在你调用的任何函数中......(甚至可以让它成为你类的方法)
function yourFunction( p1 )
p1.v1 = 21;
p1.v2 = 22;
end
所以,你可以这样使用它...
>> o = yourClass();
>> o.v1 = 1;
>> o.v2 = 2;
>> o
o =
yourClass handle
Properties:
v1: 1
v2: 2
Methods, Events, Superclasses
>> yourFunction(o);
>> o
o =
yourClass handle
Properties:
v1: 21
v2: 22
Methods, Events, Superclasses
【讨论】:
这可能更简单,更“标准”...
function [v1 v2] = yourFunction(v1,v2)
v1 = 13;
v2 = 22;
end
这就是你如何使用它...
>> v1 = 1;
>> v2 = 2;
>> [v1 v2] = yourFunction(v1,v2);
>> v1
>> 13
>> v2
>> 22
【讨论】: