본문 바로가기
programming language/MATLAB

conv(), filter(), 인수분해 전개

by 남성 2011. 3. 1.

conv() 함수와 filter() 함수의 차이를 알아보고자 한다.

다음과 같이 두 행벡터에 대하여

  

x =[1 2 3]

 

x =

1 2 3

 

y=[3 4 5]

 

y =

3 4 5

 

convolution 해보면 결과는 아래 같다.

C=conv(x,y)                                                 (1)

 

C =

3 10 22 22 15

 

 

그리고 x, y 대하여 filtering 해보면 결과는 아래와 같다.

 

F=filter(x, 1, y)                                             (2)

 

F =

3 10 22

 

봐도 conv() 함수를 적용한게 길게 나온 것을 확인 수가 있다.

conv() 함수는 벡터의 길이를 더한 -1 만큼 길이의 결과가 나온다.

예에서는 x 길이가 3 이고 y 길이가 3 이므로 3+3-1 = 5 만큼의 결과가 나오는 것이다.

 

filter() 함수는 입력값이 길이만큼 출력이 나온다. filter() 함수의 입력 y 길이가 3 이므로 F 결과는 3 나오는 것이다.

디지털 필터에는 FIR IIR 형태의 필터가 있으며 여기서는 numerator 성분 (2) flter() 함수의 두번째 인자가 1 이므로 FIR 필터링을 수행한 것이다.

 

filter() 함수를 이용하여 conv() 결과와 동일하게 나오게 하기 위해서는 입력값 y 에다 0 추가해 주면 된다.

 

F2=filter(x,1,[y 0 0])                                            (3)

 

F2 =

3 10 22 22 15

 

(3) 같이 입력값 y 뒤에 0 두개 추가 주면 (1) 결과와 동일한 것을 확인 있다.

 이제 conv() 함수와 인수분해 전개의 유사점에 대해 알아 보자.

다음과 같은 식이 있을 경우

                                                                                          (4)

 

식은 다음과 같이 전개가 된다.

 

                                                                                                                 (5)

 

MATLAB 에서 이런 전개를 경우에 conv() 이용할 있다.

(4) 괄호 안에 있는 계수 값들을 차수의 순서 대로 묶어서 conv() 취하면 아래와 같은 결과가 나온다.

    y=conv([2 3], [3 2 1])

 

y =

6 13 8 3                                         (6)

 

결과적으로 (6) 결과를 (5) 비교해 보면 계수 값이 같은 것을 있다.

 

  

댓글0