목차
1. discrete lowpass filter
2. discrete bandpass filter
3. discrete highpass filter
2. discrete bandpass filter
3. discrete highpass filter
본문내용
convolution하였기 때문이다. 이차이는 그리 크지 않다. 이는 다음 page에서 MATLAB으로 구현된 spectrum에서 확인할 수 있다.
결과를 보다 확실히 하기 위해 주어진 입력 데이터를 MATLAB “freqz"함수를 이용하여 주파수 성분을 분석하여 보았다.
주어진 input signal x[n]의 dB scale spectrum이다. 주어진 input signal은 0.1π부근에 대부분의 주파수가 몰려있는 것을 볼 수 있다. 그러므로 Lowpass filtering에서만 대부분의 값이 나오고 나머지 filtering에서는 값이 거의 없었다. 4번째 결과인 y4[n] 역시 이론대로라면, y3[n]와 똑같이 나와야 하지만, 신호 성분이 워낙 미미해서 제대로 된 결과 값이 안 나온 것이라고 생각된다.
다음은 앞에서 구현해 보았던, Lowpass filter, Highpass filter, Bandpass filter를 MATLAB으로 확인해 보았다.
3번째 bandpasss filter와 마지막 Lowpass*Highpass filter가 비슷하다는 것을 알 수 있다.
● Source Code
#include
#include
#define N 256
#define pi 3.1415926535897932384626433832795
void main(void)
{
int i=0, j=0;
int n=0;
double x[N];
double y1[N]={0.0}; //lowpass 결과
double y2[N]={0.0}; //highpass 결과
double y3[N]={0.0}; //bandpass 결과
double y4[N]={0.0}; //lowpass->highpass 결과
double h1[41]; //lowpass
double h2[41]; //highpas
double h3[41]; //bandpass
double h1_1[41]; //lowpass after windowing
double h2_2[41]; //highpass after windowing
double h3_3[41]; // bandpass after windowing
double h4_4[81]; //lowpass * highpass
double rectwin[41]; //rectangular window
double input;
FILE *ifp, *ofp, *ofp1, *ofp2, *ofp3;
ifp = fopen("hw1_in.txt","r"); //입력신호
ofp = fopen("output.xls","w");
ofp1 = fopen("output1.xls","w");
ofp2 = fopen("output2.xls","w");
ofp3 = fopen("output3.xls","w");
//입력신호 파일입력
while (fscanf(ifp, "%lf", &input) == 1)
{
x[i] = input;
i++;
}
// -20부터 20까지 3개의 필터 구현
for(i=-20;i<21;i++)
{
if(i==0)
{
h1[i+20] = (5.0/8.0);
h2[i+20] = (5.0/8.0);
h3[i+20] = (1.0/8.0);
}
else
{
h1[i+20] = (5.0/8.0)*sin(5.0*pi*i/8.0)/(5.0*pi*i/8.0);
h2[i+20] = pow(-1,i)*(5.0/8.0)*sin(5.0*pi*i/8.0)/(5.0*pi*i/8.0);
if((i%2)==0)
{
j=(i+20)/2;
h3[i+20] = pow(-1,j%2)*2.0*(1.0/8.0)*sin(1.0*pi*i/8.0)/(1.0*pi*i/8.0);
}
else
h3[i+20] = 0.0;
}
}
/* Generating rectangular window */
for(i=0;i<41;i++)
{
if(i<11)
rectwin[i] = 1.0;
else
rectwin[i] = 0.0;
}
/* shift h1,h2,h3 as 5points right to use window method*/
for(i=0;i<41;i++)
{
if(i>41-16)
{
h1_1[i] = 0.0;
h2_2[i] = 0.0;
h3_3[i] = 0.0;
}
else
{
h1_1[i] = h1[i+16]*rectwin[i];
h2_2[i] = h2[i+16]*rectwin[i];
h3_3[i] = h3[i+16]*rectwin[i];
}
}
/* convolution */
for(i=0;i
{
for(j=0;j<11;j++)
{
if(i
;
else
{
y1[i] += x[i-j] * h1_1[j];
y2[i] += x[i-j] * h2_2[j];
y3[i] += x[i-j] * h3_3[j];
}
}
}
// convolution lowpass with highpass filter
for(i=0;i<81;i++)
{
if(i<41)
for(j=0;j<=i;j++)
{
h4_4[i] += h1_1[i-j] * h2_2[j];
}
else
for(j=i-40;j<41;j++)
{
h4_4[i] += h1_1[i-j] * h2_2[j];
}
}
// y4
for(i=0;i
{
for(j=0;j<22;j++)
{
if(i
;
else
{
y4[i] += x[i-j] * h4_4[j];
}
}
}
/* problem 1,2,3 output */
for(i=0;i<41;i++) //y1, y2, y3 출력시 i
{
fprintf(ofp1,"%lf\n",h1_1[i]); //y1출력시 y1[i]
fprintf(ofp2,"%lf\n",h2_2[i]); //y2출력시 y2[i]
fprintf(ofp3,"%lf\n",h3_3[i]); //y3출력시 y3[i]
}
for(i=0;i<81;i++) //y4출력시 N으로 바꿔줌
{
fprintf(ofp,"%lf\n",h4_4[i]); //y4출력시 y4[i]
}
}
결과를 보다 확실히 하기 위해 주어진 입력 데이터를 MATLAB “freqz"함수를 이용하여 주파수 성분을 분석하여 보았다.
주어진 input signal x[n]의 dB scale spectrum이다. 주어진 input signal은 0.1π부근에 대부분의 주파수가 몰려있는 것을 볼 수 있다. 그러므로 Lowpass filtering에서만 대부분의 값이 나오고 나머지 filtering에서는 값이 거의 없었다. 4번째 결과인 y4[n] 역시 이론대로라면, y3[n]와 똑같이 나와야 하지만, 신호 성분이 워낙 미미해서 제대로 된 결과 값이 안 나온 것이라고 생각된다.
다음은 앞에서 구현해 보았던, Lowpass filter, Highpass filter, Bandpass filter를 MATLAB으로 확인해 보았다.
3번째 bandpasss filter와 마지막 Lowpass*Highpass filter가 비슷하다는 것을 알 수 있다.
● Source Code
#include
#include
#define N 256
#define pi 3.1415926535897932384626433832795
void main(void)
{
int i=0, j=0;
int n=0;
double x[N];
double y1[N]={0.0}; //lowpass 결과
double y2[N]={0.0}; //highpass 결과
double y3[N]={0.0}; //bandpass 결과
double y4[N]={0.0}; //lowpass->highpass 결과
double h1[41]; //lowpass
double h2[41]; //highpas
double h3[41]; //bandpass
double h1_1[41]; //lowpass after windowing
double h2_2[41]; //highpass after windowing
double h3_3[41]; // bandpass after windowing
double h4_4[81]; //lowpass * highpass
double rectwin[41]; //rectangular window
double input;
FILE *ifp, *ofp, *ofp1, *ofp2, *ofp3;
ifp = fopen("hw1_in.txt","r"); //입력신호
ofp = fopen("output.xls","w");
ofp1 = fopen("output1.xls","w");
ofp2 = fopen("output2.xls","w");
ofp3 = fopen("output3.xls","w");
//입력신호 파일입력
while (fscanf(ifp, "%lf", &input) == 1)
{
x[i] = input;
i++;
}
// -20부터 20까지 3개의 필터 구현
for(i=-20;i<21;i++)
{
if(i==0)
{
h1[i+20] = (5.0/8.0);
h2[i+20] = (5.0/8.0);
h3[i+20] = (1.0/8.0);
}
else
{
h1[i+20] = (5.0/8.0)*sin(5.0*pi*i/8.0)/(5.0*pi*i/8.0);
h2[i+20] = pow(-1,i)*(5.0/8.0)*sin(5.0*pi*i/8.0)/(5.0*pi*i/8.0);
if((i%2)==0)
{
j=(i+20)/2;
h3[i+20] = pow(-1,j%2)*2.0*(1.0/8.0)*sin(1.0*pi*i/8.0)/(1.0*pi*i/8.0);
}
else
h3[i+20] = 0.0;
}
}
/* Generating rectangular window */
for(i=0;i<41;i++)
{
if(i<11)
rectwin[i] = 1.0;
else
rectwin[i] = 0.0;
}
/* shift h1,h2,h3 as 5points right to use window method*/
for(i=0;i<41;i++)
{
if(i>41-16)
{
h1_1[i] = 0.0;
h2_2[i] = 0.0;
h3_3[i] = 0.0;
}
else
{
h1_1[i] = h1[i+16]*rectwin[i];
h2_2[i] = h2[i+16]*rectwin[i];
h3_3[i] = h3[i+16]*rectwin[i];
}
}
/* convolution */
for(i=0;i
for(j=0;j<11;j++)
{
if(i
else
{
y1[i] += x[i-j] * h1_1[j];
y2[i] += x[i-j] * h2_2[j];
y3[i] += x[i-j] * h3_3[j];
}
}
}
// convolution lowpass with highpass filter
for(i=0;i<81;i++)
{
if(i<41)
for(j=0;j<=i;j++)
{
h4_4[i] += h1_1[i-j] * h2_2[j];
}
else
for(j=i-40;j<41;j++)
{
h4_4[i] += h1_1[i-j] * h2_2[j];
}
}
// y4
for(i=0;i
for(j=0;j<22;j++)
{
if(i
else
{
y4[i] += x[i-j] * h4_4[j];
}
}
}
/* problem 1,2,3 output */
for(i=0;i<41;i++) //y1, y2, y3 출력시 i
fprintf(ofp1,"%lf\n",h1_1[i]); //y1출력시 y1[i]
fprintf(ofp2,"%lf\n",h2_2[i]); //y2출력시 y2[i]
fprintf(ofp3,"%lf\n",h3_3[i]); //y3출력시 y3[i]
}
for(i=0;i<81;i++) //y4출력시 N으로 바꿔줌
{
fprintf(ofp,"%lf\n",h4_4[i]); //y4출력시 y4[i]
}
}
추천자료
디지털 오디오 시스템
디지털과 아날로그의 차이점 & 일상생활에서 컴퓨터 활용의 예
디지털 음향기기
디지털도서관과 도서관자동화 사례
디지털 압축 코덱의 종류 및 특징과 기술 방식 (MPEG, MPEG-2 AAC, VQF, AC-3, DTS, ATRAC3,...
디지털 지상파 방송의 특징, 추진현황, 방송 도입의 주요 쟁점에 대한 조사
디지털 콘텐츠 산업
디지털 저작권관리(DRM)와 XrML 기술언어에 관한 고찰
디지털 시스템 및 실험-Multivibrator
디지털음악
디지털의 장점과 단점
[문서, 문서와 전자문서, 웹문서, 디지털문서, 공문서, 경유문서, 고문서, 국왕문서]문서와 ...
[방송통신융합]방송통신융합과 방송산업, 방송규제, 방송통신융합과 유료TV, 케이블TV, 방송...
[유통활성화][유통][소프트웨어][디지털정보재산][영상컨텐츠][영상제작물][음반시장]소프트...
소개글