用于活动识别的滑动窗口算法 [英] Sliding window algorithm for activity recognition
问题描述
我想写一个用于活动识别的滑动窗口算法.
I want to write a sliding window algorithm for use in activity recognition.
训练数据是< 1xN>,所以我认为我只需要获取(说window_size=3
)数据window_size
并对其进行训练.我后来也想在矩阵上使用此算法
.
The training data is <1xN> so I'm thinking I just need to take (say window_size=3
) the window_size
of data and train that. I also later want to use this algorithm on a matrix
.
我是Matlab的新手,所以我需要有关如何正确实现此方法的任何建议/指导.
I'm new to matlab so i need any advice/directions on how to implement this correctly.
推荐答案
简短答案:
%# nx = length(x)
%# nwind = window_size
idx = bsxfun(@plus, (1:nwind)', 1+(0:(fix(nx/nwind)-1))*nwind)-1;
idx
将是大小为 nwind-by-K 的矩阵,其中 K 是滑动窗口的数量(即,每列包含一个滑动窗口的索引).
idx
will be a matrix of size nwind-by-K where K is the number of sliding windows (ie each column contains the indices of one sliding window).
请注意,在上面的代码中,如果最后一个窗口的长度小于所需的长度,则将其删除.滑动窗口也不重叠.
Note that in the code above, if the last window's length is less than the desired one, it is dropped. Also the sliding windows are non-overlapping.
一个例子来说明:
%# lets create a sin signal
t = linspace(0,1,200);
x = sin(2*pi*5*t);
%# compute indices
nx = length(x);
nwind = 8;
idx = bsxfun(@plus, (1:nwind)', 1+(0:(fix(nx/nwind)-1))*nwind)-1;
%'# loop over sliding windows
for k=1:size(idx,2)
slidingWindow = x( idx(:,k) );
%# do something with it ..
end
%# or more concisely as
slidingWindows = x(idx);
对于重叠的窗口,让:
noverlap = number of overlapping elements
然后将以上内容简单地更改为:
then the above is simply changed to:
idx = bsxfun(@plus, (1:nwind)', 1+(0:(fix((nx-noverlap)/(nwind-noverlap))-1))*(nwind-noverlap))-1;
显示结果的示例:
An example to show the result:
>> nx = 100; nwind = 10; noverlap = 2;
>> idx = bsxfun(@plus, (1:nwind)', 1+(0:(fix((nx-noverlap)/(nwind-noverlap))-1))*(nwind-noverlap))-1
idx =
1 9 17 25 33 41 49 57 65 73 81 89
2 10 18 26 34 42 50 58 66 74 82 90
3 11 19 27 35 43 51 59 67 75 83 91
4 12 20 28 36 44 52 60 68 76 84 92
5 13 21 29 37 45 53 61 69 77 85 93
6 14 22 30 38 46 54 62 70 78 86 94
7 15 23 31 39 47 55 63 71 79 87 95
8 16 24 32 40 48 56 64 72 80 88 96
9 17 25 33 41 49 57 65 73 81 89 97
10 18 26 34 42 50 58 66 74 82 90 98
这篇关于用于活动识别的滑动窗口算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!