gpt4 book ai didi

matlab - 用于事件识别的滑动​​窗口算法

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:50 26 4
gpt4 key购买 nike

我想编写一个用于事件识别的滑动​​窗口算法。

训练数据是 <1xN>,所以我认为我只需要获取(比如 window_size=3)数据的 window_size 并对其进行训练。我以后也想在矩阵上使用这个算法.

我是 matlab 的新手,所以我需要任何关于如何正确实现它的建议/指导。

最佳答案

简短的回答:

%# nx = length(x)
%# nwind = window_size
idx = bsxfun(@plus, (1:nwind)', 1+(0:(fix(nx/nwind)-1))*nwind)-1;

idx 将是一个大小为 nwind-by-K 的矩阵,其中 K 是滑动窗口的数量(即每列包含一个滑动窗口的索引)。

请注意,在上面的代码中,如果最后一个窗口的长度小于所需的长度,则将其丢弃。滑动窗口也不重叠。

举例说明:

%# 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

那么上面简单的改成:

idx = bsxfun(@plus, (1:nwind)', 1+(0:(fix((nx-noverlap)/(nwind-noverlap))-1))*(nwind-noverlap))-1;


显示结果的示例:

>> 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

关于matlab - 用于事件识别的滑动​​窗口算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2202463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com