调用arrayfun;参数估计;

时间:2011-08-08 12:42:16

标签: function matlab handle

我的估算有问题。

我有一个函数,它取决于未知向量V = [v1,...,v4]的值。 我还有一个参考数据矢量YREF = [yref1,...,yrefn]。 我想写一个函数,它返回向量Y(以便稍后比较,比如使用lsqnonlin)。我知道“arrayfun”,但似乎没有用。

我有一个子函数,它返回范围[-100,100],

中的具体值
 %--------------------------------------------------------------------------
 function y = SubFunction(Y, V)
  y = fzero(@(x) v(1).*sinh(x./v(2)) + v(3).*x - Y, [-100 100]);
 end
 %--------------------------------------------------------------------------

然后我对结果做了一些操作:

 %--------------------------------------------------------------------------
 function y = SomeFunction(Y,V)
  temp = SubFunction (Y,V);
  y = temp + v(4).*Y;
 end
 %--------------------------------------------------------------------------

这些函数适用于单个Y值,但不适用于整个向量。如何将结果存储到矩阵中以供将来比较?

提前致谢 克里斯

1 个答案:

答案 0 :(得分:0)

如果Y是一个向量,那么定义为fzero的参数的匿名函数将返回一个向量,而不是标量。

您可以使用循环解决它(注意匿名函数定义中的Y(k)):

 function y = SubFunction(Y, v)
     y = zeros (size(Y));
     for k = 1 : length (Y)
         y(k) = fzero(@(x) v(1).*sinh(x./v(2)) + v(3).*x - Y(k), [-100 100]);
     end
 end