Matlab中的矢量化积分函数

Matlab中的矢量化积分函数,matlab,vector,integration,vectorization,curve-fitting,Matlab,Vector,Integration,Vectorization,Curve Fitting,我在Matlab中有以下功能: function y = exact_func(q0,x) q = q0/(1+x^2); h_func = @(t) sech(t).^2; fun = @(t) log(1+q*h_func(t)); y = integral(fun,-Inf,Inf)/(q*integral(h_func,-Inf,Inf)); end 它接受位置x和参数q0,并返回标量。如何修改函数,使其能够接受x的数组(一系列步骤)?最后,我想让这个函数适合一些数据(为了找到最佳拟合

我在Matlab中有以下功能:

function y = exact_func(q0,x)
q = q0/(1+x^2);
h_func = @(t) sech(t).^2;
fun = @(t) log(1+q*h_func(t));
y = integral(fun,-Inf,Inf)/(q*integral(h_func,-Inf,Inf));
end
它接受位置
x
和参数
q0
,并返回标量。如何修改函数,使其能够接受
x
的数组(一系列步骤)?最后,我想让这个函数适合一些数据(为了找到最佳拟合的
q0
,但是Matlab抱怨矩阵维数不一致,所以我认为这是因为我当前版本的函数只接受标量
x
,而不接受向量
x

,对于数组值函数的
积分
,需要将属性设置为
true
您需要使用的地方有一些错误。请参阅下面的修复代码:

q = q0 ./ (1 + x.^2);    
%       ↑       ↑     You need to use element-wise operations as indicated 
h_func = @(t) sech(t).^2;
fun = @(t) log(1 + q*h_func(t)); %---↓------↓ 
y = integral(fun,-Inf,Inf,'ArrayValued',1) ./ (q*integral(h_func,-Inf,Inf));