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

How to square the result of 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;

我希望它能工作,因为你会计算 numbers 的平方(f(x) 的输出)而不是函数句柄或 cfit 对象(对象 f本身)。