设置使用matlab“integral”和(仅)标量函数?

时间:2015-07-08 23:51:08

标签: matlab

我有一个功能,它不容易写入以获取矢量输入并返回矢量输出。内置integral函数似乎期待这一点,并且同时评估了许多位置。有什么办法可以解决这个问题吗?

即,最简单的测试用例是

f = @(x) x * x; % intended to be univariate
integral(f, 0, 1); %I only want to have it call with univariate inputs.

我故意不将函数设置为x .* x以测试单变量输入。显然,我的功能比这复杂得多,无法进行矢量化。

1 个答案:

答案 0 :(得分:1)

您可以使用help中提到的数组值标志:

>> f = @(x) x * x;
>> integral(f,0,1,'ArrayValued',true)

ans =

    0.3333

帮助说明有点误导:

  

数组值函数标志,指定为逗号分隔对   由'ArrayValued'falsetrue01组成。设置这个   标记为true以指示fun接受标量的函数   输入并返回矢量,矩阵或N-D数组输出。

     

默认值false表示fun是一个函数   接受矢量输入并返回矢量输出。

请注意,它没有明确指定输入是标量且输出是标量,但很明显意图是使用标量输入。