有的时候需要对一个长数组,按照窗口大小依次处理(多用于语音处理),这个时候就是所谓的滑动窗口。
下面博主将使用c++实现滑动窗口
void sildingWindow(double data[N]){
double frame[Len];
for (int i = 0; i < N;i = i+Len){
memcpy(frame, data+i, 8*Len);
...
}
}
主要用到的是memcpy函数,该函数的原型是void *memcpy(void*dest, const void *src, size_t n); 其中dest是目标数组,src为原数组,size_t为要复制内容的字节大小。该函数的功能是由src指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内。在这里我们使用循环来实现滑动的效果每次循环计数器i增加的量为窗口的大小。另外,由于memcpy输入的都是地址变量,对于数组来说数组名指向其首地址,因此data+i表示第i个数组元素的地址,即复制数据的起点。