컨볼루션 하기 문제...
보단
질문 제목 : 컨볼루션을 하는 프로그램을 만드는 건데요 x[n] = cos(pi/24*n+pi/2) (0=n=4799
h[n] = 1/3 (-1= n =1) 입니다.
질문 내용 : #includestdio.h
#include stdlib.h
#include math.h
int main(void)
{
double *input;//입력받은 값을 저장하기 위한 배열
double *fir;//입력받은 값을 저장하기 위한 배열
double *output;//출력을 위한 함수
int x,y,inadd,firadd;
double a,b;
int y_num;//출력 갯수
int i_num;//x[n]배열 크기를 입력 받기 위한 변수
int f_num;//h[n]배열 크기를 입력 받기 위한 변수
#define pi 3.14
printf(x[n],h[n]의 배열의 크기를 입력하시오.\n);
scanf(%d %d ,&i_num, &f_num);//배열의 크기를 입력 받기 위한 scanf문
input=(double *)malloc(sizeof(int)*(i_num));//입력받은 크기로 x[n]배열 메모리공간 할당
fir=(double *)malloc(sizeof(int)*(f_num));//입력받은 크기로 h[n]배열 메모리공간 할당
//두 배열에 입력받은 원소값을 저장하기 위한 처리
printf(x[n]배열 시작주소를 입력하시오.\n);
scanf(%d,&inadd);
printf(h[n]배열 시작 주소를 입력하시오.\n);
scanf(%d,&firadd);
printf(x[n] 값을 입력하시오.\n);
for(x=inadd;xi_num+inadd;x++) {//배열크기만큼 반복
scanf(%lf,&a);//원소를 입력받기 위한 scanf문
input[x]= cos(pi/24*a+pi/5);//input배열에 원소 저장
}
printf(h[n]값을 입력하시오.\n);
for(x=firadd;xf_num+firadd;x++) {//배열크기만큼 반복
scanf(%lf,&b);//원소를 입력받기 위한 scanf문
fir[x]=b;//fir배열에 원소 저장
}
printf(\n 아래와 같이 y[n]값이 출력 되었습니다..\n);
y_num=i_num+f_num-1;//출력갯수 구함
output = (double *)malloc(sizeof(int)*(y_num));//출력함수를 저장할 output배열 메모리공간할당
for(x=inadd+firadd;xy_num;x++)//출력함수의 초기화
output[x]=0;
for(x=inadd;xi_num+inadd;x++)
for(y=firadd;yf_num+firadd;y++)
output[x+y]+=(input[x]*fir[y]);//convolution
for(x=inadd+firadd;xy_num;x++)
printf(%d ,(int)output[x]); //결과를 출력
printf(\n);
return 0;
}
이렇게 소스를 짰는데 잘안나오는거 같아서 그런데 도와주실분 ㅠㅠㅠㅜ