“拟合”的Matlab集成;linearinterp“;返回错误“;第一个输入参数必须是函数句柄;
试图得到一些实验收集的数据的积分 在使用包络函数和abs函数之后,我使用拟合函数来得到我想要积分的方程(不幸的是,““拟合”的Matlab集成;linearinterp“;返回错误“;第一个输入参数必须是函数句柄;,matlab,integral,integrate,linear-interpolation,Matlab,Integral,Integrate,Linear Interpolation,试图得到一些实验收集的数据的积分 在使用包络函数和abs函数之后,我使用拟合函数来得到我想要积分的方程(不幸的是,“poly”没有提供足够接近数据的拟合): 那么当我尝试 q = integral(f,3e4,9e4); 我得到一个错误: 使用整数时出错(第82行)第一个输入参数必须是函数 处理 findenergyfromfitcurve(第10行)中的错误q=积分(f,3e4,9e4) 我以为f是一个(数学)函数,不明白错误告诉了我什么。当我尝试使用“poly3”时,如果它是线性的,我仍然
poly
”没有提供足够接近数据的拟合):
那么当我尝试
q = integral(f,3e4,9e4);
我得到一个错误:
使用整数时出错(第82行)第一个输入参数必须是函数
处理
findenergyfromfitcurve(第10行)中的错误q=积分(f,3e4,9e4)
我以为f
是一个(数学)函数,不明白错误告诉了我什么。当我尝试使用“poly3
”时,如果它是线性的,我仍然会得到那个错误
TIA
是一个函数,但其类型是cfit而不是函数句柄f
函数需要函数句柄,您可以做什么 在执行以下操作之前,是否将cfit转换为函数句柄 整体的integral()
x = rand(5,1);
dat = rand(5,1);
f = fit(x,dat,'linearinterp');
% Create a new function handle
f = @(x)f(x);
q = integral(f, 3e4,9e4, 'ArrayValued', 1)
2) 什么是…'数组值',1)也可以吗?它不起作用 直到我把它放进去,它必须做点什么
f
是一个分段函数,下面的说明基于这样的假设:f
是一个2分段线性函数,但它也可以用于n分段函数。
fit()
函数的任务是查找参数:
a
b
c
d
k
在代码方面
f
看起来像
function y = f(x,a,b,c,d,k)
% PIECEWISELINE A line made of two pieces
% that is not continuous.
y = zeros(size(x));
% This example includes a for-loop and if statement
% purely for example purposes.
for i = 1:length(x)
if x(i) < k
y(i) = a.* x(i) + b;
else
y(i) = c.* x(i) + d;
end
end
end
函数y=f(x,a,b,c,d,k)
%分段直线由两段组成的直线
%这是不连续的。
y=零(尺寸(x));
%此示例包括for循环和if语句
%纯粹为了举例的目的。
对于i=1:长度(x)
如果x(i)要绘制函数句柄,只需使用
fplot(f)
这是f
总之,
f
可能有多个表达式,这就是我设置
“arrayvalue
”设置为true,以便integral()
函数知道f
有多个表达式,省略它意味着f
有一个
不真实的表达
是一个函数,但其类型是cfit而不是函数句柄f
函数需要函数句柄,您可以做什么 在执行以下操作之前,是否将cfit转换为函数句柄 整体的integral()
x = rand(5,1);
dat = rand(5,1);
f = fit(x,dat,'linearinterp');
% Create a new function handle
f = @(x)f(x);
q = integral(f, 3e4,9e4, 'ArrayValued', 1)
2) 什么是…'数组值',1)也可以吗?它不起作用 直到我把它放进去,它必须做点什么
f
是一个分段函数,下面的说明基于这样的假设:f
是一个2分段线性函数,但它也可以用于n分段函数。
fit()
函数的任务是查找参数:
a
b
c
d
k
在代码方面
f
看起来像
function y = f(x,a,b,c,d,k)
% PIECEWISELINE A line made of two pieces
% that is not continuous.
y = zeros(size(x));
% This example includes a for-loop and if statement
% purely for example purposes.
for i = 1:length(x)
if x(i) < k
y(i) = a.* x(i) + b;
else
y(i) = c.* x(i) + d;
end
end
end
函数y=f(x,a,b,c,d,k)
%分段直线由两段组成的直线
%这是不连续的。
y=零(尺寸(x));
%此示例包括for循环和if语句
%纯粹为了举例的目的。
对于i=1:长度(x)
如果x(i)要绘制函数句柄,只需使用
fplot(f)
这是f
总之,
f
可能有多个表达式,这就是我设置
“arrayvalue
”设置为true,以便integral()
函数知道f
有多个表达式,省略它意味着f
有一个
不真实的表达
谢谢你,不过我有两个问题:1)为什么我不能在将f交给函数句柄后绘制f?在这行之前它就可以工作了,我只是觉得我不太理解函数句柄。2) 什么是…'数组值',1)也可以吗?直到我把它放进去,它才开始工作,所以它必须做点什么…谢谢你,不过我有两个问题:1)为什么一旦我把它交给函数句柄,我就不能画f?在这行之前它就可以工作了,我只是觉得我不太理解函数句柄。2) 什么是…'数组值',1)也可以吗?直到我把它放进去它才起作用所以它必须做点什么。。。