我想确定在哪个样本中开始一个玩家的移动曲线以及曲线停止的样本,然后计算总曲线的大小。
我的输入是Mid_Angle(2x11矩阵),它显示角度中点的索引(1)和值(2)。此外,我有输入Ang_Sample(1x1126),它显示了连续样本的方向向量之间的角度。
现在我有这个:
d = 50 --> %number of samples included before and after.
e = 0.4 --> %threshold for curve
for i= 1:length(Mid_Angle)
Ang_Abs = abs(Ang_Sample([Mid_Angle(1,i)-d]:[Mid_Angle(1,i)+d]));
Start_Ang(i) = find(Ang_Abs>e,1,'first')+(Mid_Angle(1,i)-d);
End_Ang(i) = find(Ang_Abs>e,1,'last')+(Mid_Angle(1,i)-d);
Total_Ang(i) = sum(Ang_Sample([Start_Ang(i)]:[End_Ang(i)]));
end
我对它不满意,因为有时它不起作用。我收到错误???下标索引有时必须是第一行的实数正整数或逻辑。而且,我对曲线的开始和结束的确定方式感到不满意。如果经过一条曲线后,一条新曲线开始出现,我就会遇到麻烦。
我想要的是:
1)通过确定哪个是第一个样本,之后所有连续样本偏离前一个样本超过0.4度,确定在曲线中点之前哪个样本开始他的曲线。所以例如MidAngle Index = 180,Angle Sample(172:180)是[0,0.5,0.3,0.5,0.8,1.2,1.7,1.6,1.8]我需要一个函数来告诉我Angle Sample(175)是第一个样本,它开始不断偏离曲线。
2)相同,但现在为曲线的终点。那么在中点之后的哪个样本中,每个样本的信号停止偏差超过0.4?
3)填写曲线的开始和结束并汇总它之间的样本以计算总曲线幅度 - >这应该是好的。