컴퓨터 과학/Digital Signal Processing

1. Digital Signal Processing, 신호와 시스템

잡학다식을꿈꾼다 2022. 12. 1. 15:15
반응형

이 글의 내용은 이 책을 참고하였다!!

신호 처리를 배우기 위해서는 우선 신호(Signal)가 무엇인지 알아야 한다. 사전에 의하면 "일정한 부호, 표지, 소리 몸짓 따위로 특정한 내용 또는 정보를 전달하거나 지시학 수 있는 전달매체, 또는 그렇게 하는데 사용하는 행동 또는 부호 등" 을 의마한다고 정의되어 있다. 쉽게 말해서 정보를 포함하고 있는 모든 것들을 신호로 보면된다. 일상에서 "신호"와 "정보"라를 혼용하기도 한다. 그러나 이 두 단어는 엄연한 차이가 있다. 정보(Information)는 정제된 신호를 의미한다. 정보의 사용자가 필요한 데이터만을 가지고 있는 편집된 신호를 정보라고 한다. DSP의 목적 중 하나는 바로 신호에서 정보를 추출해내는 것이다. 

 신호를 분류하는 기준 중 대표적인 것은 연속성(Continuity)과 주기성(Periodicity)이다. 연속성은 말그대로 신호가 시간에 대해 끊임없이 이어져 있는 특성을 의미한다. 연속성을 가진 신호를 연속시간 신호(Continuous-time signal)이라 하고, 반대로 시간상으로 이산적인 신호에 대해 이산시간 신호(Discrete-time signal)라 일컫는다. 주기성은 신호가 일정한 간격을 가지고 동일하게 나타나는 특성을 의미한다. 주기를 가지고 반복되는 신호에 대해 주기 신호(Periodic signal), 그렇지 아니한 신호를 비주기 신호(Non-periodic signal)라고 부른다.

  연속 시간 중에서도 진폭 또한 연속적인 신호를 아날로그 신호(Analog Signal)라고 한다. 대부분의 자연계에 존재하는 신호가 아날로그 신호이다. 무한하게 정밀하며, 무한하게 이어져 있는 신호가 바로 아날로그 신호이다. 신호의 원본정도로 생각하면 편할 것이다. 아날로그 신호는 결론부터 말하자면, 있는 그대로 컴퓨터가 수용하지 못한다. 아무리 용량이 큰 메모리라도 파이(Pi)를 저장하지 못하는 이유와 같다. 한없이 정밀한 신호를 저장하기에는 저장용량은 유한하고, 순간의 정보만을 가공하는 것도 아니기 때문이다. 불가능하다는 것 이전에 그렇게 까지 정밀한 정보가 필요한 상황이 없는 것도 한몫을 한다.

 컴퓨터가 아날로그 신호를 그대로 다룰 수 없기 때문에, 가공할 수 있는 형태인 디지털 신호(Digital signal)로 변환할 필요가 있다. 디지털 신호는 이산 신호 중에서도 진폭이 불연속인 신호를 말한다. 아날로그 신호를 디지털 신호로 만들기 위해서는 우선 단위 시간 간격으로 시간을 샘플링해야 한다. 그런 후 각 구간을 대표하는 값을 설정하는 작업을 거쳐야 한다. 컴퓨터는 주기를 가지고 이산적인 신호만을 다룰 수 있다. 일단은 

 신호에 대해서 개념적으로는 이정도까지만 다루면 될 것 같다. 이 번 단락에서는 신호 처리에 있어서 신호를 어떻게 바라봐야 할지에 대해서 말하고 싶다. 이 부분은 내 개인적인 경험에서 나온 의견이다. 처음에 신호처리를 공부하면서 나는 신호를 시간에 따라 규칙이 있는 데이터 집합 으로 생각하고 다루었다. 그리고 이런 관점은 신호처리를 공부하는 데 있어서 큰 장애물이 되었다. 자연스럽게 시간을 중심으로 생각하다 보니 차후에 배우겠지만 시스템을 지나 가공된 신호는 나에게 시간에 대하여 두 개의 함수가 결합된 결합 함수처럼 보였다. 이는 쓸데없는 복잡함을 불러왔다. 일단 신호 자체가 규칙성을 가지거나 내가 알고 있는 함수의 형태를 띠지 않는 경우도 많았고, 시스템 역시 규칙성이 없거나, 있더라도 알고 있는 형태가 아닌 경우도 더러 있었기 때문에 직접 계산을 하지 않는 이상 예상하기 어려웠기 때문이다. 정리하자면 시간은 대부분의 것들을 이해하는 데 좋은 기준점이 되지만 적어도 신호처리에 있어서는 잘못사용하면 독이 된다. 나는 신호를 그냥 데이터 집합 그 자체로 받아들이기로 했다. 괜히 신호 자체에 의미를 부여하는 것은 특별한 경우가 아닌 한 일을 더 복잡하게 만들 뿐이다. 차라리 한 순간의 신호만을 처리하겠다는 마음가짐이 훨씬 신호처리를 이해하는 데 도움이 되었다. 지금은 이 말이 잘 이해가 되지 않을 것이다. 이해가 안 가는 것이 당연하고, 머리로 이해하기 보다는 체감하는 영역이라고 본다. 지금은 신호 = 데이터 집합 이정도만 기억해 두자.

 시스템의 정의를 보면 "각 구성요소들이 상호작용하거나 상호의존하여 복잡하게 얽힌 통일된 하나의 집합체"라고 되어 있다. 정의를 다 떠나서 "시스템 = 함수"라고 생각하면 편할 것 같다. 시스템을 함수이되 기존의 함수보다 범용성이 넓고 다양한 형태를 지니는 함수 정도로 생각하면 된다. 시스템은 신호를 가공하고 정보를 뽑아낸다. 시스템의 특성을 이해하고, 더나아가서 원하는 형태의 시스템을 구성하는 것은 DSP의 알파이자 오메가이다.

 시스템의 특성을 몇 가지로 나눌 수 있다. 안정성(Stability), 기억의 유무(Memory), 가역성(Invertibility), 시불변(Invariance), 선형성(Linear)가 그것이다.

 

  • 안정성 : 한 시스템이 있을 때, 그 시스템의 입력이 유한하다면 출력 역시 유한할 때 그 시스템을 안정적인 시스템이라고 한다. 공학적인 관점에서 보았을 때 시스템은 안정적이어야 한다. 생각해보라. 예를 현수교의 지지 시스템이 특정 입력이 들어왔을 때 무한대로 출력이 뛰어버린다고 생각해보자. 이는 다리의 붕괴로 이어진다.
  • 기억의 유무 : 기억의 유무는 시스템이 과거의 기억이 현재의 시스템에 영향을 주는 지를 의미한다. 과거의 값이 현재의 시스템에 영향을 주면 그 시스템을 기억을 가지고 있다 하고, 그렇지 아니한 시스템, 즉 현재와 미래의 값에만 의존하는 시스템을 기억이 없는 시스템이라고 한다.
  •  가역성 : 모든 출력에 대해 다시 원래의 입력값으로 변환할 수 있는 시스템이 존재하는 지를 의미한다. 일대일 함수일종의 가역성을 띤 시스템이다. 
  • 시불변 : 원래 입력 신호를 시간 이동시켜서 인가한 경우의 출력 신호가 원래 입력 신호에 대한 출력을 시간 이동시킨 것과 동일하면 시불변이라고 한다. 쉽게 의미해서 과거의 값을 현재의 시스템이 넣어서 얻은 결과나 현재의 값을 과거의 시스템에 넣어 얻은 결과가 같은 경우를 의미한다.
  • 선형성 : 동차성과 중첩성을 모두 만족하는 시스템을 의미한다. 동차성은 상수배한 입력을 시스템에 넣어 얻은 출력값은 원래의 입력을 시스템에 넣어 얻은 결과를 상수배한 것과 같을 때를 의미한다. 중첩성은 다수의 입력을 합쳐서 시스템에 넣어 얻은 결과와 각각의 입력에 대해 시스템을 거쳐서 얻은 결과를 합한 것이 같을 때를 의미한다.

 시스템의 특성 중 시불변과 선형성은 꼭 알아두기를 바란다. 후에 다룰 모든 시스템 들은 LTI 시스템, 즉 선형성과 시불변 특성을 모두 가진 시스템이다. 시불변과 선형성은 시스템을 분석하기 좀 더 쉽게 만들어준다. 현실 세계의 시스템들은 대부분 선형성과 시불변 특성을 만족하는 경우가 별로 없다. 다만 근사적으로는 두 특성을 가지고 있기에, LTI 시스템을 다루는 방법을 공부할 필요가 있다. LTI 시스템을 어떻게 이용하는 지에 대해서는 차후에 다루도록 하자. 이것으로 이번 글을 마무리하겠다.

 

 

반응형