我要加入 登录
声振论坛 返回首页

迷你猫的个人空间 http://home.vibunion.com/?189836 [收藏] [复制] [分享] [RSS]

日志

参照ANALYSIS OF COMPUTED ORDER TRACKING实现最基础的阶比分析

已有 601 次阅读2018-8-25 23:36

clear all;clc;
load ('MOnixinhao.mat');
%处理键相信号获得键相出发时间点arrive_time
[maxtab,mintab]=peakdet(tacho,0.5);
arrive_time=t0(maxtab(:,1)');
%通过方程式拟合获取角度域对应的时间节点angle_time。以每周期采样256个数据点为准.需要去掉第一个和最后一个时间节点.
%从第二个键相时间点开始往前pi往后pi的方式开始采样。%%作为参考,一共转了140圈,所以总角度不应该大于140*2*pi=879.6459
angle_time=[];
for k=2:(length(arrive_time)-1);
    A=[1,arrive_time(k-1),arrive_time(k-1)^2;1,arrive_time(k),arrive_time(k)^2;1,arrive_time(k+1),arrive_time(k+1)^2];
    B=[0;2*pi;4*pi]+(k-2)*2*pi;
    C=A\B;
    
    N=256;n=0:255;
    angle_trin=B(1,:)+pi+2*pi*(n./N);
    if C(3)~=0
        this_time=((4*C(3).*(angle_trin-C(1))+C(2)^2).^(0.5)-C(2))/(2*C(3));
    elseif C(3)==0 
        this_time=(angle_trin-C(1))./C(2);
    end
    angle_time=[angle_time,this_time];
end

%对角域对应的时间节点进行插值计算,插值方法为多项式插值,获取角域数据序列angle_val_trin 
angle_val_trin=[];
for t=1:length(angle_time);
    [minval,minpos]=min(abs(t0-angle_time(t)));
    int_y=[1,t0(minpos-1),t0(minpos-1)^2,t0(minpos-1)^3;1,t0(minpos),t0(minpos)^2,t0(minpos)^3;
        1,t0(minpos+1),t0(minpos+1)^2,t0(minpos+1)^3;1,t0(minpos+2),t0(minpos+2)^2,t0(minpos+2)^3];
    int_t=[x(minpos-1);x(minpos);x(minpos+1);x(minpos+2)];
    int_a=int_y\int_t;
    this_val=int_a(1)+int_a(2)*angle_time(t)+int_a(3)*angle_time(t)^2+int_a(4)*angle_time(t)^3;
    angle_val_trin=[angle_val_trin,this_val];
end

%阶域的各参数。总阶数256阶,对应angle_val_trin的长度进行计算
ordertrick=abs(fft(angle_val_trin));
ordertrick=ordertrick(1:(length(ordertrick)/2));
order_num=0:256/(length(angle_val_trin)-1):128;
plot(order_num,ordertrick);

问题一大把 慢慢解决中

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 我要加入

返回顶部