LTI(Linear Time-Invariant) Systems에 대해 확인하기 전 여기서 System이 뭘 의미하는지 살펴보자.
System은 신호를 처리하여 새로운 신호 또는 새로운 신호 표현을 생성하는 방식으로 동작한다. 시스템의 입력과 출력이 모두 이산시간 신호일 경우, 해당 시스템을 이산시간 시스템(discrete-time system)이라고 부른다.
이런 시스템의 특성을 가진 LTI 시스템(Linear Time-Invariant System)은 이름에 나오듯 선형(linear)성과 시간 불변성(time-invariance)을 만족하는 시스템이다. 저 특성들에 의해 어떤 시스템을 Predictable하게 해주는 것이 핵심이라 생각한다.
LTI에 대해 이해하기 전에 Causality(인과성)와 Stability(안정성)라는 사전 지식이 필요하다. Causality와 Stability를 간단하게 살펴보자.
Causality(인과성)
LTI 시스템은 인과적일 수도 있고 비인과적일 수도 있으며, 인과성은 임펄스 응답이 \( h[n] = 0 \,\, \text{for} \,\, n < 0 \)인지 여부로 판별된다.
Causal system
현재 및 과거 입력값만을 사용하여 출력을 계산하는 시스템을 인과적 시스템(causal system)이라고 한다.
$$ y[n] = 𝒯(x[n]) = x[n] - x[n-1] $$
즉, input 과거(어딘지 모를 먼 과거)부터 현재까지의 데이터가 현재에 대한 output에 영향을 끼친다는 것이다. 일반적으로 이는 합리적이라 느껴지고 당연하게 느껴진다.
Non-Causal system
미래 입력값을 사용하는 시스템을 비인과적 시스템(noncausal system)이라고 한다.
$$ y[n] = 𝒯(x[n]) = x[n+1] - x[n] $$
Causal system과 반대로 현재부터 미래(어딘지 모를 먼 미래)까지의 데이터가 현재의 output에 영향을 준다. 말이 안되는 소리처럼 느껴지긴 한다. 하지만 비인과적 시스템은 오프라인 처리(예: 녹음된 데이터 처리, 사후 분석)에서는 가능하다. 즉, 비인과적 시스템은 실시간 처리에는 부적합하지만, 모든 데이터를 미리 확보한 상황에서는 사용할 수 있다. 미리 확보한다는 것은 Buffer와 연관이 있다.
- 비인과 시스템은 미래 입력값 필요.
- 하지만 실시간으로 입력이 들어오는 경우, 미래 입력은 아직 존재하지 않기 때문에 바로 처리할 수 없음.
이는 입력 신호를 일정 시간 동안 저장(버퍼링) 한 다음, 미래 값까지 확보되었을 때 계산을 수행하여 해결 가능하다. 버퍼는 이렇게 미래 입력을 확보할 때까지 기다리기 위해 필요한 메모리 공간이다. 우리 삶에 밀접한 비인과 시스템 예시를 좀 더 설명해 보면 다음과 같다.
스마트폰 사진 보정(HDR 합성): 스마트폰 카메라는 한 번의 셔터로 여러 장의 사진(밝기 다른 이미지)을 연속으로 찍은 후 합성한다. 이 때 밝은 사진과 어두운 사진(미래에 찍힌 사진)을 함께 고려하여 한 장의 선명한 이미지를 생성하는데 여기서 비인과적 연산이 발생한다. 여러 시점의 데이터를 모두 참조하여 최종 결과를 만들기 때문이다
음성 인식(Voice Activity Detection): 음성 신호의 말소리 시작/끝을 탐지할 때, 미래 신호를 참고하면 더욱 정확한 탐지가 가능해진다. 이 때 오프라인 음성 데이터 처리에서는 미래 신호를 저장한 후 분석하는 과정에서 비인과적 연산이 발생한다.
스포츠 하이라이트 생성: 녹화된 스포츠 영상을 분석하여 골 장면, 득점 장면을 추출할 때를 생각해볼 수 있다. 특정 이벤트 발생 이후 몇 초 동안의 데이터를 참조하여 하이라이트를 생성하는데 이 역시 비인과적 처리이다. 미래의 상황을 보고 중요한 장면을 결정하는 것이기 때문이다.
Stability(안정성)
모든 유한한 입력 시퀀스가 유한한 출력 시퀀스를 생성할 때, 시스템은 안정적(stable)이다. 아래는 임펄스 응답이 없는 일반 비선형 시스템 예시이다.
$$ y[n] = 𝒯(x[n]) = x[n]^2 $$
$$ \text{※} \,\, y[n] = 𝒯(x[n]) = log(x[n]) $$
LTI 시스템이 BIBO 안정성(Bounded-Input Bounded-Output Stability)을 만족하려면 임펄스 응답(\( h[n] \))의 절댓값 총합이 유한해야 한다.
$$ \sum_{n=-\infty}^{\infty} |h[n]| < \infty $$
LTI(Linear Time-Invariant) Systems
LTI(Linear Time-Invariant) Systems이란 선형성(linearity)과 시간 불변성(time-invariance)을 동시에 만족하는 시스템이다. 그러므로 LTI 시스템은 예측가능한(Predictable) 시스템이라는 장점을 가지게 된다.
예를 들어 게임 속 여러 개의 캐릭터를 동시에 조작할 때, 각각의 캐릭터를 따로 조작한 결과를 더한 것과 여러 캐릭터를 한꺼번에 조작한 결과가 같다면, 이 시스템은 선형성을 가진다. 또한 어느 시점에 조작을 시작하든 결과가 일정하다면 시간 불변성도 가진다.
LTI 시스템의 장점을 정리해보면 다음과 같다.
- 수학적으로 분석과 설계가 매우 용이하다.
- 임펄스 응답만 알면 시스템 전체 특성을 알 수 있다.
- 주파수 응답 분석(푸리에 변환) 및 안정성 판별이 간단하다.
선형성(Linearity)이란 시스템이 선형성을 가지려면, 입력 신호의 덧셈과 스칼라 곱이 출력에 대해 그대로 적용되어야 한다. 즉, 두 입력 \( x_1[n], x_2[n] \)과 상수 \( a, b \)에 대해 다음을 만족해야 한다.
$$ T(a x_1[n] + b x_2[n]) = a T(x_1[n]) + b T(x_2[n]) $$
시간 불변성(Time-Invariance)이란 시스템이 시간 불변성을 가지려면, 입력 신호를 시간적으로 지연시켰을 때 출력도 동일하게 지연되어야 한다. 즉, 입력 \( x[n] \)에 대해 \( x[n-n_0] \)를 입력하면 출력은 \( y[n-n_0] \)가 되어야 한다.
$$ T(x[n-n_0]) = y[n-n_0] $$
LTI 시스템의 기본 특성은 LTI 시스템은 입력과 시스템의 임펄스 응답 \( h[n] \)의 Convolution으로 출력이 계산된다.
$$ y[n] = x[n] * h[n] = ∑_{k=-∞}^{∞} x[k] h[n-k] $$
그러나 시간 영역에서 컨볼루션은 계산이 복잡하다. 이를 Z 변환(Z-transform) 을 사용하면 곱셈으로 단순화할 수 있다. LTI 시스템의 입력 \( x[n] \), 출력 \( y[n] \), 임펄스 응답 \( h[n] \)에 대해 다음 관계가 성립한다.
$$ Y(z) = H(z) X(z) $$
즉, LTI 시스템은 Z 변환을 통해 매우 간단하게 분석할 수 있다. 관련 예제를 하나 풀어보자.
예제
입력 \( x[n] \)과 출력 \( y[n] \)의 관계가 다음과 같다고 하자. 이를 Z 변환을 사용해 분석하라.
$$ y[n] = 0.5 y[n-1] + x[n] $$
이를 위해 우선 시스템 함수인 \( H(z) \)를 구해야 하며, 시스템이 안정한지 판단하여야 한다.
해설은 아래와 같다.
1. Z 변환 적용
시스템 양변에 Z 변환을 취한다.
$$ Z\{y[n]\} = 0.5 Z\{y[n-1]\} + Z\{x[n]\} $$
z 변환의 시간 지연 성질에 따라
$$ Z\{y[n-1]\} = z^{-1} Y(z) $$
따라서 식은 다음과 같이 된다.
$$ Y(z) = 0.5 z^{-1} Y(z) + X(z) $$
2. 시스템 함수 \( H(z) \) 구하기
출력 \( Y(z) \)를 정리한다.
$$ Y(z) (1 - 0.5 z^{-1}) = X(z) $$
양변은 \( X(z) \)로 나누어 \( H(z) \)를 구한다
$$ H(z) = \frac{Y(z)}{X(z)} = \frac{1}{1 - 0.5 z^{-1}} $$
3. 안정성 판단
안정성은 시스템 함수의 폴(pole) 위치로 판단한다.
분모를 0으로 만드는 \( z \)를 찾는다.
$$ 1 - 0.5 z^{-1} = 0 $$
양변에 \( z \)를 곱하여 \( z \)를 찾는다.
$$ z - 0.5 = 0 $$
$$ z = 0.5 $$
따라서 pole이 \( |z| = 0.5 \)에 위치하며, 단위 원 \( |z| = 1 \) 안쪽에 있으므로 이 시스템은 안정적이다.
- 폴이 단위원 안에(\( |z| < 1 \)) 있다면 신호가 시간이 지남에 따라 점점 감쇠: 안정
- 폴이 단위원에 있으면(\( |z| = 1 \)) 단위신호가 변하지 않고 유지: 경계적 상태(특별 관리 필요)
- 폴이 단위원 밖에 있을 때(\( |z| > 1 \)) 신호가 시간이 지남에 따라 폭주: 불안정
관련 포스팅
2025.04.10 - [Data Science/SR & VC] - Z Transform(Z 변환)
참고 자료
https://velog.io/@lighthouse97/LTI-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%B4%EB%9E%80