
MATLAB一维数据滑动窗口生成样本程序
直接上干货!最近在搞传感器数据处理时被滑动窗口折磨得够呛,网上那些通用代码要么处理速度
慢,要么生成的样本格式对不上机器学习模型输入要求。直到实验室师兄甩给我这个不到20行的MATLAB函
数,真香警告!
先看这个魔性函数的调用姿势:
```matlab
% 原始加速度计数据(假设1000个采样点)
raw_data = randn(1000,1);
% 生成50个样本,每个样本包含200个采样点,滑动步长100
samples = win(raw_data, 200, 100);
```

_示意图:滑动窗口分割后的样本矩阵_
核心代码拆解(关键部分加了弹幕式注释):
```matlab
function winout=win(x,win,inc)
rows = fix((size(x,1)-win)/inc +1); % 计算能切多少块披萨
winout = zeros(rows, win); % 预分配内存(速度玄学加成)
n = 1;
for i = 1:rows
% 截取当前窗口的"肉段"(注意边界处理)
winout(i,:) = x(n:n+win-1,1)';
n = n + inc; % 移动窗口的秘技:步长控制
if n+win-1 > size(x,1) % 防溢出彩蛋
break
end
end
```
重点说几个骚操作: