我有一个功能,它不容易写入以获取矢量输入并返回矢量输出。内置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
以测试单变量输入。显然,我的功能比这复杂得多,无法进行矢量化。
答案 0 :(得分:1)
您可以使用help中提到的数组值标志:
>> f = @(x) x * x;
>> integral(f,0,1,'ArrayValued',true)
ans =
0.3333
帮助说明有点误导:
数组值函数标志,指定为逗号分隔对 由
'ArrayValued'
和false
,true
,0
或1
组成。设置这个 标记为true
以指示fun
是接受标量的函数 输入并返回矢量,矩阵或N-D数组输出。默认值
false
表示fun
是一个函数 接受矢量输入并返回矢量输出。
请注意,它没有明确指定输入是标量且输出是标量,但很明显意图是使用标量输入。