我的问题是我得到一个错误:“即使被积体确实返回这样的向量,被积F也必须返回与输入大小相同的单个实值向量”。
我在函数中调用以下内容:
Vsame = @(x) Vsame_fit(x./lB);
F0011 = @(x) (1-(x.^2)/2).*exp(-(x.^2./2));
integ_F0011same = @(x) F0011(x).*Vsame(x);
integ_F0011same(linspace(1,3,10))
Fsame(1,1,2,2) = quadcc(integ_F0011same,0,Inf);
我在其他地方定义了常数。在该函数之外,我定义了Vsame_fit:
function y = Vsame_fit(q)
for k=1:length(q)
if q(k)<0.022913
y(k) = 0.98*tanh(200*q(k));
elseif q(k)<0.50274
y(k) = 1/(0.9*q(k)+1);
elseif q(k)<21.598
y(k) = 1/(1.046*q(k)+0.9266);
else
y(k) = 1/(0.9512*q(k)+2.89);
end
end
end
我在自变量的长度上编写了循环,以确保它将返回向量。此外,如果我将一些简单的测试称为
integ_F0011same(linspace(1,3,10))
在函数内部,按预期返回10个元素。为什么会出现此错误? 最终,我只想让我希望将其保存到Fsame(1,1,2,2)的积分值。我之所以用这么多单独的函数定义事物,是因为我又重复使用Vsame 3次来评估相似的积分,例如
integ_F0110same = @(x) F0110(x).*Vsame(x);
Fsame(1,2,2,1) = quadcc(integ_F0110same,0,Inf);
其中,F011(x)也通过函数句柄定义。我应该有更好的方法吗?