这是我上一个问题的扩展:https://dsp.stackexchange.com/questions/28095/choosing-low-pass-filter-parameters 我正在从窃听的相机录制人物.我使用一些软件跟踪每个人的头部.由于头部摇晃,我想从轨道周期性.
我使用低通butterworth过滤器.我希望过滤的起点和终点与未过滤的轨道相同.
Data: K>> [xcor_i,ycor_i ] ans = -101.7000 -77.4040 -102.4200 -77.4040 -103.6600 -77.4040 -103.9300 -76.6720 -103.9900 -76.5130 -104.0000 -76.4780 -105.0800 -76.4710 -106.0400 -77.5660 -106.2500 -77.8050 -106.2900 -77.8570 -106.3000 -77.8680 -106.3000 -77.8710 -107.7500 -78.9680 -108.0600 -79.2070 -108.1200 -79.2590 -109.9500 -80.3680 -111.4200 -80.6090 -112.8200 -81.7590 -113.8500 -82.3750 -115.1500 -83.2410 -116.1500 -83.4290 -116.3700 -83.8360 -117.5000 -84.2910 -117.7400 -84.3890 -118.8800 -84.7770 -119.8400 -85.2270 -121.1400 -85.3250 -123.2200 -84.9800 -125.4700 -85.2710 -127.0400 -85.7000 -128.8200 -85.7930 -130.6500 -85.8130 -132.4900 -85.8180 -134.3300 -86.5500 -136.1700 -87.0760 -137.6500 -86.0920 -138.6900 -86.9760 -140.3600 -87.9000 -142.1600 -88.4660 -144.7200 -89.3210
代码(由@SleuthEye回答):
dataOut_x = xcor_i(1)+filter(b,a,xcor_i-xcor_i(1)); dataOut_y = ycor_i(1)+filter(b,a,ycor_i-ycor_i(1));
输出:
在上面的示例中,端点(左侧)对于已过滤和未过滤的轨道是不同的.我怎样才能确保它是一样的?
你的问题很模糊,并没有真正的具体问题.我假设您希望过滤后的数据与测量数据在同一点开始,但不确定为什么这种情况不会发生,以及如何进行.
低通滤波器是一种降低快速变化影响的滤波器.这样做的一种方法和这里似乎使用的方法是使用滚动平均值.滚动平均值只是先前数据点的平均值(平均值).看起来您正在使用5个数据点的滚动平均值.因此,在过滤器为您提供单个数据点之前,您需要五个原始数据点.
-101.7000 -77.4040 } -102.4200 -77.4040 } } -103.6600 -77.4040 } } -103.9300 -76.6720 } } -103.9900 -76.5130 } Filter point 1. } -104.0000 -76.4780 } Filter point 2. -105.0800 -76.4710 -106.0400 -77.5660 -106.2500 -77.8050 -106.2900 -77.8570 -106.3000 -77.8680 -106.3000 -77.8710
为了解决这个问题,您可以将第一个数据点附加到数据集四次,因为这意味着过滤器将产生相同数量的点.然而,这是一个非常粗略的解决方案,因为您正在创建新数据.这可以非常简单地实现,例如,如果调用您的数据集myArray
:
firstEntry = myArray(1,:); myNewArray = [firstEntry; firstEntry; firstEntry; firstEntry; myArray];
这将创建四个等于第一个数据点的数据点,然后允许您将低通滤波器应用于数据,并使其从同一点开始.
希望这会有所帮助,但值得注意的是,过滤始终会导致数据丢失.
因为您不想实现它但希望其他人:上述理论是正确的,但您需要在向量的末尾添加2个值:
x_last = xcor_i(end); y_last = ycor_i(end); xcor_i = [xcor_i;x_last;x_last]; ycor_i = [ycor_i;y_last;y_last];
这给出了以下内容:
正如你所看到的那样,目前的结局非常接近.