我正在使用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
函数的输出进行平方?
我认为这可以解决问题:
fsq = @(x)f(x).^2;
我希望这能起作用,因为您将对数字(f(x)
的输出)进行平方,而不是函数句柄或 cfit 对象(对象本身f
)。