1. 程式人生 > >用c語言實現1000個隨機數序列與7位卷積核卷積

用c語言實現1000個隨機數序列與7位卷積核卷積

有註釋,程式碼如下:

#include "stdio.h"
#include "stdlib.h"
#include "time.h"

#define SEIRE_LEN 1000         //序列長度
#define KERNEL_LEN 7           //卷積核長度
#define RESULT_LEN SEIRE_LEN+KERNEL_LEN-1  //結果長度
int main()
{
	int result[RESULT_LEN];         
	int f[SEIRE_LEN];           //宣告陣列,給定大小
	int h[KERNEL_LEN]= {1,2,3,4,3,2,1};   //this is a low pass filter
	int m,n;
	srand((unsigned int)time(NULL));        //產生隨機數的seed,用於使每次產生的隨機序列不同
	for(m=0;m<SEIRE_LEN;m++)
	{
		f[m] = rand()%10-5;                 //產生-5~5的隨機數並賦給陣列f
	}
	for(n=0;n<RESULT_LEN;n++)              //卷積運算
	{
		for(m=0;m<SEIRE_LEN;m++)
		{
			if((n-m)>=0 && (n-m)<=KERNEL_LEN)     //兩個序列均從零開始,0之前的未定義,隨意加一個判斷條件
			{
			result[n]+=f[m]*h[n-m]; 
			}
		}
		printf("%d ",result[n]);                //打印出來結果
	}
	return 0;
}