如何对cfit的结果求平方?

时间:2019-06-17 13:58:36

标签: matlab object curve-fitting numerical-integration function-handle

我正在使用MATLAB对实验收集的数据进行一些数据分析。 在使用envelop e和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函数的输出求平方?

1 个答案:

答案 0 :(得分:2)

我认为这可以解决问题:

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

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