요약

인과 시스템은 미래를 내다보지 않는다. 어느 순간의 출력이 그때까지(지금과 과거)의 입력만으로 정해진다. 자동차는 운전자가 나중에 밟을 페달을 미리 알 수 없으니 인과적이다. 실시간으로 돌아가는 물리 시스템은 모두 인과적이어야 한다. 하지만 녹음을 다 끝낸 뒤 편집하거나, 시간이 아니라 위치가 독립 변수인 사진을 처리할 때는 “앞쪽” 값도 쓸 수 있어서 인과성이 꼭 필요하지 않다.

예시로 보기

주식 가격처럼 오르내림이 심한 데이터의 흐름을 보려고 앞뒤 \(M\)개씩의 평균을 낸다.

\[y[n] = \frac{1}{2M+1}\sum_{k=-M}^{M}x[n-k]\]

\(k = -M\)일 때 \(x[n + M]\), 즉 \(M\)칸 뒤의 미래 입력이 들어간다. 그래서 이 시스템은 비인과적이다. 장 마감 후에 그날 그래프를 다듬는 것은 괜찮지만, 실시간 주문에는 쓸 수 없다. 과거 \(M\)개만 평균하면 인과적이 된다1.

그림

\(M = 5\)로 같은 잡음 섞인 데이터를 평균했다. 과거 11개만 쓴 평균은 앞뒤 평균과 모양이 같지만 정확히 5칸 늦게 따라온다. 미래를 쓰지 않는 대가다2.

정의

어느 시각의 출력이 그 시각과 과거의 입력에만 의존하면 인과 시스템이다. 다르게 말하면, 두 입력이 어느 시각 \(t_0\)(또는 \(n_0\))까지 같으면 출력도 그 시각까지 같다.

인과 비인과
\(y[n] = \sum_{k=-\infty}^{n}x[k]\), \(y[n] = x[n-1]\), 모든 기억 없는 시스템 \(y[n] = x[n] - x[n+1]\), \(y(t) = x(t + 1)\)

기억 없는 시스템은 지금 입력만 쓰니 언제나 인과적이다. 반대로 인과 시스템이 기억 없는 것은 아니다(누산기).

예제

예제 1.12-1 \(y[n] = x[-n]\)

  • \(n_0 > 0\)인 시각만 보면, 출력 \(y[n_0]\)은 과거의 입력 \(x[-n_0]\)으로 정해진다. 여기까지는 인과적으로 보인다.
  • 그런데 \(n < 0\)이면 다르다. \(n = -4\)에서 \(y[-4] = x[4]\)이므로 미래의 입력이 지금의 출력을 정한다.
  • 하나라도 그런 시각이 있으면 비인과 시스템이다.

예제 1.12-2 \(y(t) = x(t)\cos(t + 1)\)

  • \(\cos(t+1)\)은 입력과 상관없이 시간만으로 정해지는 함수 \(g(t)\)다. 그래서 \(y(t) = x(t)g(t)\).
  • 시각 \(t\)의 출력은 같은 시각의 입력 \(x(t)\)에만 의존하므로 인과적이다. \(\cos\) 안의 \(+1\)은 입력이 아니라 함수의 일부라서 미래를 보는 것이 아니다.
검증: 미래 입력만 다른 두 입력을 넣어 출력을 비교하는 방식으로 누산기·지연기·기억 없는 시스템·\(x(t)\cos(t+1)\)은 인과, \(x[n] - x[n+1]\)·\(x[-n]\)·이동 평균은 비인과로 판정 — 14_causality_verify.py

활용

  • 실시간 오디오 필터, 제어기, 통신 수신기는 인과 시스템만 만들 수 있다. 4장의 “이상적 필터”는 비인과적이라 그대로는 만들 수 없다.
  • 영상 처리는 독립 변수가 위치라 좌우·위아래 화소를 함께 써도 된다. 사진의 흐림 필터는 비인과적이다.

연결

자주 하는 오해

“식에 \(t + 1\)이 보이면 비인과적이다.”

틀렸다. 미래를 보는지는 입력 \(x\)의 괄호 안만 보고 판단한다. \(x(t)\cos(t+1)\)의 \(t+1\)은 입력이 아니라 정해진 함수 안에 있다. 확인: 미래 입력만 바꿔도 출력이 그대로이다(검증 코드). 반대로 \(x(-n)\)처럼 \(+\)가 없어도 비인과일 수 있다.

확인 문제

C1 인과적인가? ① \(y[n] = x[n] + 2x[n-3]\) ② \(y(t) = x(2t)\) ③ \(y[n] = n\,x[n]\)

답: ① 인과 ② 비인과 (\(t = 1\)에서 \(x(2)\), 미래) ③ 인과 (같은 시각의 입력만 씀)
흔한 오답: ②를 인과로 고르는 것. \(t < 0\)이면 과거를 보지만 \(t > 0\)이면 미래를 본다.

C2 기억 없는 시스템은 왜 언제나 인과적인가?

답: 출력이 같은 시각의 입력에만 의존하므로 미래 입력을 쓸 일이 없다. 인과성은 “지금과 과거만 쓴다”이고 기억 없음은 “지금만 쓴다”라서, 앞의 조건이 뒤를 포함한다.

  1. 판정은 검증 코드로 확인했다. ↩

  2. 14_causality_plot.py로 그렸고, 같은 코드로 다음을 확인했다: 과거 \(2M + 1\)개 평균이 앞뒤 평균을 정확히 \(M\)칸 늦춘 것임. 데이터는 사인 곡선에 무작위 잡음을 더해 만들었다. ↩