소프트웨어/음성프로그래밍

3. filter와 convolution의 연관성

cs만두 2013. 6. 24. 02:42

>> h

h =

     1     1     1     1

>> x

x =

    10     9     8     7     6     5     4     3     2     1

>> conv(h,x)

ans =

    10    19    27    34    30    26    22    18    14    10     6     3     1

>> filter(h,1,x)

ans =

    10    19    27    34    30    26    22    18    14    10

>>

매트랩에서 제공하는 filter함수를 어떻게 c로 구현할까 여러 방향으로 시도를 하고 있었다.

(matlab의 filter.m파일은 빌트인 함수라서 개발자가 볼 수 없다...)

Matlab에서 위와같이 명령어를 실행하였다.

 

h는 필터계수이고

x는 데이터

그리고 convolution함수를 통해 이 두 데이터를 계산해 보았다.

그리고 filter함수를 통해서도 계산을 해 보았다.

 

역시나. 예상대로 같은 결과를 보였다. 그런데 convoulution결과에서는 x의 인덱스보다 큰 범위에 찌끄러기가 남는데 filter함수의 결과에서는 이 값을 지워줬다. 아마 filtfilt fcn을 한 것같다. 일단은 c로 구성할때 0~index-1까지만 arr에 넣고 뒤에 값들은 날리는 방식으로 구현하는게 편할것 같다.