들어가며
신호및시스템에 대한 공부를 시작했다. 유튜브에 있는 강의를 보면서 한 번 공부해보려고 한다! 전공 때도 안들었던 수업을 이제야 듣게되다니… 확실히 필요하면 찾아듣게 되는 것 같다. ㅋㅋㅋㅋ
물론 지금 수업을 진행하는 파이썬도 챙겨듣고 있다. 파이썬 솔직히 아직도 어디에 써먹을 수 있을 지 감이 안오긴 하는데, 이번주까지만 듣고 놓아줄 생각으로 공부하면서, 짬짬이 이렇게 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를 구할 수 있게된다.
ㅤ
연속된 구간에 대해서 각각의 시간 구간에 대해 필터링된 신호를 계속 평균을 낸다면 정보들을 연속해서 추출할 수 있게 된다.
'TIL' 카테고리의 다른 글
| [250925] Day 45 - 드디어 SW 수업 끝 (0) | 2025.09.25 |
|---|---|
| [250923] Day 43 - 감기조심하세요 (1) | 2025.09.24 |
| [250912] Day 33 - 텔레칩스 임베디드 스쿨 1달 리뷰 (1) | 2025.09.17 |
| [250909] Day 30 - 어셈블리를 까보자. (0) | 2025.09.10 |
| [250905] Day 26 - 죽이고싶은 BFS 문제와의 10선 (0) | 2025.09.10 |