【问题标题】:Passing Parameters Among Functions During Matlab Optimization在 Matlab 优化期间在函数之间传递参数
【发布时间】:2012-04-28 14:40:31
【问题描述】:

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

【问题讨论】:

    标签: matlab


    【解决方案1】:

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

    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
    

    【讨论】:

      【解决方案2】:

      这可能更简单,更“标准”...

      yourFunction.m

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

      这就是你如何使用它...

      使用你的函数

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多