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