大唐直轴呀

x1=(1:360);

y1=Sheet.(1);
y2=Sheet.(2);

%构建一个360×21的数组;
y=[y1,y2];
%拟合曲线表达式,采用的是四阶傅里叶拟合     
[a_1,b_1]=createFit(x1, y1);               %b中的sse是和方差,rmse均方根,都是越小越好;rsquare决定系数,一般越接近1越好,>0.4拟合效果就还可以;Adjusted R-square:自由度调整 r 平方。
a0 =       5.223 ;                         %下面都是傅里叶拟合的系数,同频的正弦函数加和还是正弦函数
       a1 =    -0.02391; 
       b1 =     -0.3808 ; 
       a2 =     -0.1735 ; 
       b2 =      0.1064  ;
       a3 =    -0.05254  ;
       b3 =      0.1933  ;
       a4 =     0.03245 ;
       b4 =   0.0001262  ;
       w =    0.006936 ;
a_x1 =  a0 + a1*cos(x1*w) + b1*sin(x1*w) + ...
               a2*cos(2*x1*w) + b2*sin(2*x1*w) + a3*cos(3*x1*w) + b3*sin(3*x1*w) + ...
               a4*cos(4*x1*w) + b4*sin(4*x1*w);
ax=[a_x1;a_x1];   
      
error=y-ax';%计算误差,误差是一个360×21的数组
[value,position]=max(error);%计算每一个点的最大误差值与相角
[number,n]=max(value);%导出最大值与其所在的点。我们的目标是输出点和对应的相角
temp=position(n);
%%输出下压点信息
disp('下压点的序号为');
disp(n);
disp('下压点的相角为')
disp(temp); 

  function [fitresult, gof] = createFit(x, y)
[xData, yData] = prepareCurveData( x, y );
% 设置拟合类型和精度
ft = fittype( 'fourier4' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.StartPoint = [0 0 0 0 0 0 0 0 0 0.00583396964454929];
% 使模型符合数据
[fitresult, gof] = fit( xData, yData, ft, opts );
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值