소프트웨어/음성프로그래밍
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에 넣고 뒤에 값들은 날리는 방식으로 구현하는게 편할것 같다.