在MATLAB中使用向量参数计算单变量函数的问题

ruyhziif  于 2023-05-01  发布在  Matlab
关注(0)|答案(1)|浏览(144)

设f是以如下方式定义的函数:
f = @(x)( x + [x(1); 0])
也就是说,函数f将列向量作为输入。定义另一个使用函数f的函数g:
g = @(x)(f([x;0]))
函数g取标量值作为输入。现在我想用多个参数来计算g,比如x = 0,x = 1和x = 2。写入g(0:2)不起作用:要连接的数组的维度不一致。我想要的结果是[g(0), g(1), g(2)]。我怎么能这么做

mwg9r5ms

mwg9r5ms1#

你可以使用arrayfun基本上是一个伪装的循环。您必须设置指定的输入'UniformOutput' = false(此处显示为'uni', 0),结果将是一个单元格数组,每个输入值包含一个数组元素

h = arrayfun( g, 0:2, 'uni', 0 );

h =   
1×3 cell array
    {2×1 double}    {2×1 double}    {2×1 double}

您可以使用以下命令将它们合并到一个矩阵中

h = [h{:}]

h =
     0     2     4
     0     0     0

或者,您可以定义fg来处理行向量输入,因为它们只扩展了您可以以向量化的方式对每列进行计算的行数。那么输出就是一个矩阵,每个输入一列,不需要arrayfun

f2 = @(x)( x + [x(1,:); zeros(1,size(x,2))])
g2 = @(x)(f2([x;zeros(1,size(x,2))]))
h2 = g2(0:2)

h2 =
     0     2     4
     0     0     0

相关问题