尝试对一些实验收集的数据进行积分。
使用信封和abs函数后,我使用拟合函数来获得我想要积分的方程(不幸的是“
poly
”没有给出足够接近的数据拟合):
[yupper,ylower] = envelope(signal,1000,'peak');
dat = abs(yupper);
f = fit(x,dat,'linearinterp');
然后当我尝试时
q = integral(f,3e4,9e4);
我收到错误:
使用积分时出错(第 82 行)第一个输入参数必须是函数 手柄。
findenergyfromfitcurve 中出现错误(第 10 行)
;q = integral(f,3e4,9e4)
我认为
f
是一个(数学)函数,不明白错误告诉我什么。当我尝试使用“poly3
”以防线性插值把事情搞砸时,我仍然收到该错误。
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
要绘制函数句柄,只需使用
fplot(f)
这是
f
的图表
综上所述,
可能有不止一个表达方式,这就是我设置的原因 'f
' 为 true,以便ArrayValued
函数已知integral()
有多个表达式,省略它意味着f
有一个 表达不真实。f