1. 程式人生 > >滑動視窗的實現

滑動視窗的實現

有的時候需要對一個長陣列,按照視窗大小依次處理(多用於語音處理),這個時候就是所謂的滑動視窗。


下面博主將使用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個數組元素的地址,即複製資料的起點。