Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
중앙대학교 소프트웨어학부
텔레칩스 차량용 임베디드 스쿨 3기
애플 개발자 아카데미 1기
깃허브 사진
GitHub
프로젝트 모아보기
Instagram
인스타그램 사진

TIL

[250922] Day 42 - 신호및시스템 시작

sm_amoled 2025. 9. 23. 00:34

들어가며

신호및시스템에 대한 공부를 시작했다. 유튜브에 있는 강의를 보면서 한 번 공부해보려고 한다! 전공 때도 안들었던 수업을 이제야 듣게되다니… 확실히 필요하면 찾아듣게 되는 것 같다. ㅋㅋㅋㅋ

물론 지금 수업을 진행하는 파이썬도 챙겨듣고 있다. 파이썬 솔직히 아직도 어디에 써먹을 수 있을 지 감이 안오긴 하는데, 이번주까지만 듣고 놓아줄 생각으로 공부하면서, 짬짬이 이렇게 DSP 같은 이론 공부도 빼먹지 않고 해둬야겠다.

여기에 나왔던 내용들은 다시 다 정리해서 본 게시글로 업로드를 할 예정이다!

오늘의 키워드

Python Pandas Transform

df['Column'].mean()

df['Column'].transform('mean')

단순히 mean 만 수행하면 하나의 값만 스칼라로 튀어나온다.

그런데, transform을 이용하면 DataFrame의 index 구조를 유지하면서 값을 각 칸에 넣어준다.

display(df.groupby(['Pclass', 'Sex'])['Age'].median())
display(df.groupby(['Pclass', 'Sex'])['Age'].transform('median'))

그래서 통계적인 요약 값을 필요로 할 때에는 단순 aggregation 함수를 사용하는 것이 좋고, 추가적인 연산을 위해 행 단위 분리가 필요한 경우에는 transform 을 사용해서 연산을 하는 것이 효과적이다.

오일러 공식 배우는 이유

매클로린 급수

매클로린 급수는 오일러 공식의 특수한 상황에서 (a=0) 적용할 수 있는 방법이고, 이걸 이용하면 지수함수나 삼각함수같은 특수한 형태의 초월 함수를 다항 함수의 형태로 근사할 수 있는 방법이다.

초월함수 → 다항함수로의 변환을 통해 덧셈, 뺄셈, 곱셈만으로 초월함수를 계산할 수 있기에 컴퓨터가 처리하기 편리하고, 미적분을 비교적 간단히 처리할 수 있다는 장점이 있다.

$$
f(x) = C_0 + C_1\cdot x + C_2\cdot x² + C_3\cdot x³ + C_4\cdot x⁴ + ...
$$

$f(0) = C_0$

$f'(x) = C_1 + 2C_2x + ...$ → $f'(0) = C1$

$f''(x) = 2C_2 + 6C_3x + ...$ → $f''(0) = 2C_2$

$f3(x) = 6C_3 + 24C_4x + ...$ → $f^3(0) = 6C_3$

$f^n(0) = n!C_n$

위 과정으로 각 상수항에 대한 근사값을 찾아간다.

이를 활용해, $e^{j\theta}$ 를 매클로린 급수를 활용해 다항식의 형태로 나타내보면 다음과 같이 유도할 수 있다.

위 식을 통해서 $e^{j\theta} = cos\theta + j\cdot sin\theta$ 라는 수식을 얻을 수 있었다. 이 아름다운 수식에 복소수가 들어있으니, 이걸 이제 복소평면위로 옮겨보자.

세타 값이 움직이는 경로를 따라 선을 죽 그어보면 복소 평면 위에 반지름이 1인 원이 그려지게 된다. 그런데 이 반지름이 1이라는 말은 곧 “크기와 각도를 조절하면 모든 방향의 좌표점을 가리킬 수 있다는 것”을 의미한다. 오른쪽 그림처럼 좌표에 2를 곱하면 반지름이 2인 원을 그릴 수 있고, 반지름이 2인 원 위에 있는 모든 점을 가리킬 수 있다.

그러므로, 아래 수식으로 복소 평면 위의 모든 점을 표현할 수 있게 되었다!

$$
A\cdot e^{j\theta}
$$

각도와 크기를 이용하는 좌표계가 이런 의미라는 것을 처음에 이 내용을 공부할 때는 몰랐는데, 다시 정리를 하다보니 알게되었다. 방사형 좌표계? 그런 이름이였던 것 같은데 거의 10년만에 의미를 알게 된 것 같다 ㅋㅋ.

오일러 공식이 등장하기 전까지는 지수 함수로는 양의 실수만을 표현할 수 있었다. 그런데, 오일러 공식 덕분에 모든 복소수 (복소 평면 위의 좌표들)를 지수 함수의 형태로 표현할 수 있게 되었다! 이게 어쩌면 수식적인 면에서 가장 큰 의의가 아닐까!

신호의 송수신

라디오 안테나 등에서 cos(ωt) 과 같은 형태의 신호를 송신한다고 하자.

그러면 위 신호를 복소수의 형태로 전송할 때 아래와 같이 가공해서 보낸다.

$$
e^{j\omega t} = cos(\omega t) + j\cdot sin(\omega t)
$$

만약 cos만 있었다면 단순히 시간 t에 따른 진폭이였겠지만, 뒤의 항이 추가되면서 신호의 진폭은 복소평면 그래프 상에서 원을 뺑글뺑글 그리게 된다.

자, 이제 예시 상황을 생각해보자. 다음 방송국들에서 안테나를 통해 동시에 신호를 보내기 시작한다.

  • 방송국 A: 100MHz
  • 방송국 B: 200MHz
  • 방송국 C: 300MHz

그러면 복소 평면에서 각 신호는 $e^{j \times 2\pi \times 100 \times 10^6 \times t}$ 의 수식의 형태를 그리고 있을 것이다. 주파수에 따라서 중간에 있는 숫자 100의 크기가 다를 뿐. 즉, 300MHz 의 주파수로 전달한 신호가 “더 빠르게 복소 평면을 회전한다.”

내가 이 중에서 200MHz의 주파수로 신호를 보내는 방송국 B의 신호를 수신하고 싶다고 하자. 그러면 나는 들어오는 모든 신호에 $e^{-j \times 2\pi \times 200 \times 10^6 \times t}$ 를 곱한다. 그러면 각 방송국의 신호는 아래처럼 변한다.

  • 방송국 A : $e^{-j \times 2\pi \times 100 \times 10^6 \times t}$
  • 방송국 B : 1
  • 방송국 C : $e^{j \times 2\pi \times 100 \times 10^6 \times t}$

필터링을 적용하고 나면 내가 타겟으로 한 신호는 복소평면상에서 ‘정지’ 해있고, 나머지는 계속 원을 그리며 회전하게 된다. 그리고 원을 그린다는 것은 좌표의 평균값이 0 (원점) 에 있다는 것을 의미하고, 정지해있다는 것은 좌표의 평균값이 유지된다는 것을 말한다.

  • 방송국 A 신호의 평균 : 0
  • 방송국 B 신호의 평균 : 평균값 유지 → 해당 주파수 성분이 존재한다.
  • 방송국 C 신호의 평균: 0

만약 신호가 $A·e^{j2π×200MHz×t}$ 의 형태로 들어왔다면, 필터링을 거치고 난 신호의 평균값은 $A$ 이다. 나머지 성분의 신호들은 평균값이 0이 되어 거의 사라지게 된다. 그러면 우리는 단위 시간동안의 평균을 통해 200MHz를 통해 보내고 싶었던 신호인 A를 구할 수 있게된다.

연속된 구간에 대해서 각각의 시간 구간에 대해 필터링된 신호를 계속 평균을 낸다면 정보들을 연속해서 추출할 수 있게 된다.

320x100