【问题标题】:Array as a function parameter instead separate variables in Matlab数组作为函数参数,而不是在 Matlab 中分隔变量
【发布时间】:2017-06-18 18:26:08
【问题描述】:

我需要传递给一个函数(在我的例子中为jacobian()),一个符号变量数组正在动态创建。说,

jacobian(handles{2}(t,y,paramlist),y)

其中paramlist=[var1, var2, var3, ..., varN] 具有任意大小。这里的所有变量都是象征性的并且有不同的名字。 MATLAB 报错:

输入参数不足。

知道函数定义中的参数个数,就可以分别传递所有参数。比如说n=3

 jacobian(handles{2}(t,y,paramlist(1),paramlist(2),paramlist(3)),y)

但是常见的情况呢?为每个固定数量的参数编写函数调用是一种糟糕的编程风格。有没有办法传递一个数组,以便将其视为不同的变量?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您可以将paramlist 转换为元胞数组(使用num2cell),然后使用{:} 索引创建comma separated list,然后您可以使用它来索引handles{2}。这将使paramlist 的每个值都作为单独的下标传递。

    plistcell = num2cell(paramlist);
    jacobian(handles{2}(t, y, plistcell{:}), y)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 2021-06-24
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      相关资源
      最近更新 更多