在Matlab优化过程中传递函数参数

时间:2012-04-28 05:09:44

标签: matlab

我正在尝试使用遗传算法优化大约10个参数。我需要将main函数中的参数的中间值传递给另一个函数,该函数基本上是线性ODE系统的ODE求解器,其参数为微分方程中的系数。然后,我将把解决方案返回到ODE,回到我想要最小化的主函数中。我已经尝试将变量声明为全局变量,但它似乎没有帮助。请告知如何最好地在两个函数之间传递变量。

2 个答案:

答案 0 :(得分:0)

不确定这是否是最佳方式,但我认为它应该有效。您可以尝试将它们包装在句柄类中,然后将其作为对象传递。

yourClass.m

classdef yourClass < handle
  properties
    v1;
    v2;
  end
end

然后在你调用的任何函数中......(甚至可以使它成为你班级的方法)

yourFunction.m

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

答案 1 :(得分:0)

这可能更容易,更“标准”......

yourFunction.m

function [v1 v2] = yourFunction(v1,v2)
  v1 = 13;
  v2 = 22;
end

以下是你如何使用它......

使用yourFunction

>> v1 = 1;
>> v2 = 2;
>> [v1 v2] = yourFunction(v1,v2);
>> v1
>>  13
>> v2
>>  22