REMI Lab강의 노트

Wireless Embedded Systems E01

1장 무선임베디드시스템과 SDR

코드로 하는 무선 공학

무선 공학을 하는 사람에게 프로그래밍은 무엇을 위한 도구일까?

개발자라고 하면 웹 서비스, 인공지능, 앱을 먼저 떠올리기 쉽다. 그러나 컴퓨터는 산술 연산과 논리 연산의 순서를 프로그램으로 정해 두면 자동으로 수행하는 기계이다. 공학에서는 계산을 맡기는 도구이고, 수치해석, 미분방정식 풀이, 행렬 연산이 그 예이다. 이 과목에서는 표본 수만 개의 DFT, 필터, 변조와 복조를 계산한다.

작성, 실행, 분석, 개선

프로그래밍은 과학적으로 생각하는 습관을 작은 단위로 연습하기 좋다. 코드를 쓰고, 실행하고, 결과를 분석하고, 고친다. 실험실에서 회로를 만들고 계측기로 재고 고치는 과정과 같다.

될 때까지 이것저것 바꿔 보는 방법과, 생각을 정리한 뒤 하나씩 해 보는 방법이 있다. 뒤의 방법을 쓴다. 실행하기 전에 무엇이 나와야 하는지 먼저 적고, 한 번에 하나만 바꾼다. 예를 들어 N=20N=20점 DFT에서 칸 4에 서야 할 선이 칸 16(=20−4=20-4)에 섰다면 주파수의 부호가 뒤집힌 것이니, 입력 전체를 의심하기 전에 지수의 부호와 켤레부터 확인한다(2장).

오류 메시지 읽기

프로그래밍이 배우기 쉬운 까닭은 어디가 어떻게 틀렸는지 적어도 알려 준다는 데 있다. NameError: name 'np' is not defined가 줄 번호와 함께 나오면, 그 줄보다 앞에서 import numpy as np를 빠뜨린 것이다. Python의 오류 메시지는 마지막 줄에 오류의 종류와 설명이, 그 위에 오류가 난 줄이 있다. 마지막 줄부터 읽고, 같은 메시지를 검색하면 같은 문제를 먼저 겪은 사람의 답을 찾을 수 있다.

코드를 써 주는 AI 도구도 있다. 원하는 동작을 글로 적으면 코드가 나온다. 어떤 방법으로 코드를 얻든 결과가 맞는지는 쓰는 사람이 확인해야 한다. 가장 빠른 확인은 답을 아는 입력을 넣어 보는 것이다. 칸에 정확히 놓인 복소 톤을 넣으면 DFT 선이 어느 칸에 얼마 크기로 서야 하는지 미리 안다. 과제에서 쓸 수 있는지와 범위는 과제 안내를 따른다.

Python과 MATLAB

무선 공학에서 많이 쓰는 두 언어는 Python과 MATLAB이다.

Python MATLAB
비용 무료 유료
형태 인터프리터식 스크립트 언어 인터프리터식 스크립트 언어
특징 들여쓰기로 블록을 구분한다 하드웨어 시험, 시뮬레이션과 연동한다(Simulink)
장점 배우기 쉽고 널리 쓰인다 심화 기술을 빨리 시작할 수 있다

이 과목은 Python과 배열 계산 라이브러리 numpy를 쓴다. 미리 알아 둘 것은 변수(정수, 실수, 복소수), 자료 구조(list, array, tuple, dict), 조건문과 반복문, 그리고 원소별 곱과 행렬 곱의 구별이다. Python에서 허수 단위는 숫자 뒤에 j를 붙여 1j, 4j처럼 쓴다. j만 쓰면 변수 이름으로 읽힌다.

import numpy as np
z = 3 + 4j
abs(z), np.angle(z, deg=True)   # 5.0, 53.13…°
x = np.array([1, 2, 3])
x * x                           # 원소별 곱: [1, 4, 9]
x @ x                           # 행렬 곱(내적): 14