C语言实现序列卷积

在上一篇博客中讲解了卷积和滤波的区别,本文主要介绍利用C如何实现序列卷积。
https://www.jianshu.com/p/81e0fffe3840
采用上文中的第一种方法实现:

#include
#define MATRIX_DIM 1024
#define FILTER 32
int main(){
//初始化参数
    float result[MATRIX_DIM + FILTER - 1];
    float a_in[FILTER];
    float b_in[MATRIX_DIM];
    float c_in[MATRIX_DIM + FILTER - 1];
    for (int i = 0; i < MATRIX_DIM; i++) {
        b_in[i] = i;
    }
    for (int i = 0; i < MATRIX_DIM + FILTER -1; i++) {
        c_in[i] = 0;
        result[i] = 0;
    }
    for (int i = 0; i < FILTER; i++) {
        a_in[i] = i*1.0;
    }
    for (int j = 0; j < MATRIX_DIM+FILTER-1 ; j++) {
        for (int k = 0; k < MATRIX_DIM; k++) {
        if ( (j - k) >= 0 && (j - k) < FILTER) {
            c_in[j] += a_in[j - k] * b_in[k];
            }       
        }
    }
return 0;
}

你可能感兴趣的:(C语言实现序列卷积)