Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“拟合”的Matlab集成;linearinterp“;返回错误“;第一个输入参数必须是函数句柄;_Matlab_Integral_Integrate_Linear Interpolation - Fatal编程技术网

“拟合”的Matlab集成;linearinterp“;返回错误“;第一个输入参数必须是函数句柄;

“拟合”的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”时,如果它是线性的,我仍然

试图得到一些实验收集的数据的积分

在使用包络函数和abs函数之后,我使用拟合函数来得到我想要积分的方程(不幸的是,“
poly
”没有提供足够接近数据的拟合):

那么当我尝试

q = integral(f,3e4,9e4);
我得到一个错误:

使用整数时出错(第82行)第一个输入参数必须是函数 处理

findenergyfromfitcurve(第10行)中的错误
q=积分(f,3e4,9e4)

我以为
f
是一个(数学)函数,不明白错误告诉了我什么。当我尝试使用“
poly3
”时,如果它是线性的,我仍然会得到那个错误

TIA

  • f
    是一个函数,但其类型是cfit而不是函数句柄

  • integral()
    函数需要函数句柄,您可以做什么 在执行以下操作之前,是否将cfit转换为函数句柄 整体的

代码如下所示

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
有一个 不真实的表达


  • f
    是一个函数,但其类型是cfit而不是函数句柄

  • integral()
    函数需要函数句柄,您可以做什么 在执行以下操作之前,是否将cfit转换为函数句柄 整体的

代码如下所示

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)也可以吗?直到我把它放进去它才起作用所以它必须做点什么。。。