들어가며..
컴퓨터는 숫자나 숫자 집합을 처리하므로, 사인 파 같은 연속적인 파형은 디지털 신호 처리를 위해 벡터나 숫자 스트림으로 변환되어야 한다. 숫자를 얻는 일반적인 방법은 예를 들어 48,000 샘플/초와 같은 일정한 속도로 연속 시간 신호의 값을 샘플링하는 것이다.
연속 시간 신호를 적절하게 표현하기 위해 초당 몇 개의 숫자가 필요한지는 중요한 문제이다. 이제부터 아날로그(연속 시간) 도메인과 디지털(이산 시간) 도메인 간의 신호 변환에 관련된 해알아볼 것이다.
첫 번째목표는 샘플링 이론을 이해하는 것이다. 이 이론은 샘플링 속도가 아날로그 신호의 주파수 스펙트럼에 속한 최고 주파수의 두 배보다 큰 경우, 원래 신호를 샘플에서 완벽하게 재구성할 수 있다는 것을 의미한다.
디지털에서 아날로그로 변환하는 과정을 재구성(reconstruction)이라고 한다. 가장 흔한 예는 CD 또는 DVD에서 오디오 또는 비디오를 재생하는 것이다. 예를 들어, CD나 DVD의 음악은 초당 44,100번 샘플링되어 디지털 형태로 저장되며, 플레이어는 이를 듣는 연속적인(아날로그) 파형으로 재구성한다.
재구성 과정에서는 샘플 시간 tn 사이의 누락된 신호 값들을 시간적으로 보간(interpolation)하여 이산 시간 샘플 값 x(tn)을 통해 부드러운 곡선을 생성해야 한다. 이 과정을 시간 영역 내 보간공식으로 표현할 수 있으며 이를 interpolation이라고 부른다. 반면, 스펙트럼이나 주파수 영역 관점에서 바라볼 때, 대역폭과 샘플로부터 신호를 재구성하는 등 중요한 문제들을 이해하는 대안적인 방법이 될 수 있다.
샘플링(Sampling)
지금까지 사인파와 주기 신호와 같은 연속시간 신호의 여러 예를 살펴 보았다.연속시간 신호는 시간의 함수로 수학적으로 표현되며, 여기서 t는 실수이고, x(t)의 어떤 값이든 실수로 간주된다. 연속시간 신호를 아날로그 신호라고 부르는 것이 일반적인데, 이는 신호의 진폭과 시간 변수가 모두 실수(이산적인 값이 아닌)로 가정된다는 것을 의미한다.
이 블로그의 [01 (신호 및 시스템) 신호의 특성과 신호처리] 포스팅을 살펴보자. 실제로 우리는 진짜 연속시간 파형을 그린 것이 아니다. 대신, 우리는 시간의 특정(이산적인) 지점에서만 파형의 값을 표시하고 그 지점들을 직선으로 연결할 뿐이다. 눈으로 보기 힘들 수 있지만, 신호의 어떤 값이든 유한 개수의 비트로 표현되어 있다. 중요한 점은 디지털 컴퓨터에서 표현된 신호가 시간과 진폭 모두 이산적이라는 것이다. 그러나 우리는 이제부터 시간 축은 이산적이지만 신호 값은 실수로 간주되는 이산시간 신호를 연구해 볼 것이다.
이산시간 신호는 Index(순서)를 이용해 신호값을 표기한다. (하드웨어적으로 보면, 디지털로 저장될 때 이 신호 값은 메모리 위치에 저장되므로 메모리 주소에 의해 색인된다.) 우리는 이산시간 신호의 값을x [n]로 나타낸다. 여기서 n은 시퀀스 내 값의 순서를 나타내는 정수 인수이다. 괄호 [ ]는 n을 인수로 처리하는 표기법을 제공하여 연속시간 신호 x(t)와 해당 이산시간 신호x [n]를 구별하도록 돕는다. 우리는 다음 중 하나의 방법으로 이산시간 신호를 얻을 수 있다:
(a) 우리는 연속시간 신호를 동일한 간격의 시간 순간에서 샘플링할 수 있다. 즉, tn = nTs, 인데 여기서
x[n] = x(nTs) −∞ <n< ∞
여기서 x(t)는 음성이나 오디오와 같은 지속적으로 변하는 신호를 나타낸다. 이러한 신호는 실제 세계에서 발생하기 때문에 본질적으로 아날로그 신호이다. x[n]의 개별 값은 지속적인 시간 신호의 샘플이라고 한다.
고정된 샘플 간 시간간격인 Ts는 샘플링주파수인 fs로도 표현될 수 있다.
$$f_s = \frac{1}{T_s}samples/s$$
따라서 x[n] = x(nTs) 를 다음과 같은 수식으로 쓸 수 있다: x[n] = x(n/fs)
샘플링은 연속시간 신호 x(t)에 작용하여 해당하는 이산시간 신호x[n]를 생성하는 변환 또는 작업으로 볼 수 있다. 공학에서는 이러한 변환을 시스템이라고 하며, 입력 및 출력 신호를 나타내는 블록 다이어그램과 시스템 작동을 설명하는 부분에 함께 적힌다.(보통 C-to-D 혹은 ADC 라고 적힌다.)
샘플링 작업은 입력이 연속시간 신호이고 출력이 이산시간 신호인 시스템의 한 예로 아래 그림처럼 볼 수 있다.
그림의 시스템 블록 다이어그램은 위 수식의 수학적 연산을 나타내며 이상적인 연속-이산 (C-to-D) 변환기라고 한다.
이상적인 C to D는 말 그대로 이상적일 뿐 실제로 구현할 수는 없다. 샘플링을 수행하는 실제 하드웨어 시스템은 C-to-D 변환기에서 샘플링을 촘촘히 해 이상적인 C-to-D와 근사하게 만들 뿐이다.
(b) 우리는 또한 수식으로부터 이산시간 신호의 값을 직접 계산할 수 있다. 간단한 예로 다음과 같은 수식이 있다.
$$ w[n] = n^2 -5n+3$$
이 식은 n= 0,1,2,3,4,5,6,… 에 해당하는 값 {3, -1, -3, -3, -1, 3, 9,…}의 순서를 생성한다. 이 순서 w[n]는 샘플링 주기 Ts =1초로
$$ w(t) = t^2 -5t+3 $$
을 샘플링함으로써 얻을 수 있었지만, 사실 물리적 세계에서 딱 맞아떨어지는 신호가 없을 수도 있다. 그래도, 우리는 여전히 이러한 순서의 개별 값들을 샘플이라고 부른다. 수식에 의해 설명되는 이산시간 신호에 대한 정의는 이산시간 신호 및 시스템을 공부하다 보면 계속 볼 것이다.
우리가 이산시간 신호를 그릴 때, 위 그림의 오른쪽에 나타난 것처럼 스템(Stem) 형식을 사용한다. 스템 플롯은 이산시간 신호가 지정된 시간에서만 데이터를 가짐을 명확하게 보여준다. 스템과 스템 사이에는 다른 신호가 정의되지 않는다.