Matlab中的矢量化积分函数
我在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的数组(一系列步骤)?最后,我想让这个函数适合一些数据(为了找到最佳拟合
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));