MATLAB步态识别

1.fs=1000是采样率 2.分帧 3.设定移动窗长 4.noframe为帧数 5.frame为每帧长度 6.ind_alldata是帧索引 7.ind是窗索引;

一些小的细节: no_frame怎么和frame对应起来;

2.一些属性设置

1.图像属性

2.rvalue都是设定阈值之后加上微分;

步态分割

画图完毕,判断点: Slidingwin_threshold: 先判断脚跟着地和脚尖离地;

matlab输入输出: 步进和步入:

[t_HC_L,ind_L_Heel] = Slidingwin_threshold(t,rvalue1,'slope_inc');

函数:10秒一帧,100001变为100100; 这个方法需要进行边沿判断 内部函数:

switch method
    case 'slope_inc'
        ind = setthresld(en_diffdata,TH1,TH2); % TH1=30 TH2=32
    case 'slope_dec'
        ind = setthreshold(en_diffdata,TH3,TH4); % TH3=-32 TH4=-30
end

然后调用setthreshold函数,这个函数输入data和两个阈值,接下来会

    ind = find(TH1<= curframe & curframe<=TH2)

alldata是十秒钟数据的综合; 传入的data是差分的数据变成窗数成窗长的结果;nframe为 每个窗分析一批数据,找出符合阈值的索引,然后分析出在哪一窗格。


  if length(index)>=2 && (ind_alldata-index(end-1)<least_gap) % 进一步判读两个相邻x轴坐标距离少于least_gap个采样点
     if TH1>0
        index(end) = []; % 舍弃新增加的坐标,保证取上升沿的前面坐标
        else
        index(end-1) = []; % 舍弃上一轮得到的坐标,保证取下降沿的后面坐标
         end
    end

这里面要注意,i代表的窗格数,nframe*(i-1)之中,nframe为当前窗的所有数据; 这里面涉及一个数组索引的技巧: 因为我分窗了,所以,为了更好地分析每个窗之间的数据,所以我让这个数据成为100*100的数据,最后生成坐标索引的时候,判断一次最小距离,最小距离过于小的直接舍弃; 最后一个if语句中,当index比2大或者最近的两个点之间距离小于300,直接扔掉;