如何对cfit的结果进行平方?



我正在使用MATLAB对实验收集的数据进行一些数据分析。 使用envelope 和abs函数后,我使用fit函数来获得我想要的方程,我需要对其进行平方然后积分。

我获取方程并对其进行积分的代码如下:

[yupper,ylower] = envelope(signal,1000,'peak');
dat = abs(yupper);
fitted = fit(x,dat,'linearinterp');
% Create a new function handle
fitted = @(x)fitted(x);
q = integral(fitted, 3e4,9e4,  'ArrayValued', 1)

对我正在使用的函数进行平方(在.^中与.一起使用和不使用):

%square fitted
fitted = fitted.^2;

我挣扎的地方是当我在转换为函数句柄之前尝试平方f时,我收到错误:

Undefined operator '.^' for input arguments of type 'cfit'.
Error in findenergyfromfitcurve (line 5) fitted = fitted.^2;
Undefined operator '^' for input arguments of type 'cfit'.
Error in findenergyfromfitcurve (line 5) fitted = fitted^2;

当我转换为函数句柄然后平方时,我得到函数句柄的相同错误:

Undefined operator '^' for input arguments of type 'function_handle'.
Error in findenergyfromfitcurve (line 10)
fitted = fitted^2;
Undefined operator '.^' for input arguments of type 'function_handle'.
Error in findenergyfromfitcurve (line 10)
fitted = fitted.^2;

简而言之 - 如何对fit函数的输出进行平方?

我认为这可以解决问题:

fsq = @(x)f(x).^2;

我希望这能起作用,因为您将对数字(f(x)的输出)进行平方,而不是函数句柄或 cfit 对象(对象本身f)。

最新更新