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

Embedded System 12

[신호및시스템] Phase 3-3 - Fast Fourier Transform

Fast Fourier Transform앞서 확인한 DFT Matrix 를 이용해 연산을 처리하면 반복되는 연산을 미리 끝내두고, 병렬 연산의 적용이 가능해 연산 처리 효율이 높일 수 있기는 하지만, 여전히 $O(n^2)$ 의 연산량을 가진다. 혹시 중복되는 계산이나 계산 결과를 재사용할 수 있는 부분이 있을지에 대해 고민한 결과, Fast Fourier Transform (이하 FTT) 에 대한 컨셉이 나오게 되었다.ㅤ$N=4$ 인 상황을 다시 가져와 생각해보자.$$\left[\begin{matrix}X_0\\ X_1\\X_2\\X_3\end{matrix}\right] = \left[\begin{matrix}1&1&1&1\\1&-j&-1&j\\1&-1&1&-1\\1&j&-1&-j\end{matrix}\..

[신호및시스템] Phase 3-2 - 이산 푸리에 변환

이산 푸리에 변환“이산 푸리에 변환(Discrete Fourier Transform)”은 이산시간 푸리에 변환(Discrete Time Fourier Transform) 과 다른 컨셉이다. 이걸 기억해야한다.ㅤ기존의 이산시간 푸리에 변환은 “n개의 신호($x[n]$)를 바탕으로 연속된 주파수 함수 ($X(\Omega)$)를 만들어내는 과정”이다. 이산시간 푸리에 변환은 몇 가지 특징을 가진다.주파수 범위가 0~$2\pi$ 이며, $X$ 는 주기가 $2\pi$ 인 주기함수이다.DTFT는 무한 길이 신호에 대해 정의된다. (유한 길이 신호의 경우 나머지 영역을 모두 신호가 0인 구간이라 생각해, 무한 길이 신호라고 여겨 변환할 수 있다)DTFT의 결과는 주파수 도메인에 대한 연속함수이기 때문에, 컴퓨터가 처..

[신호및시스템] Phase 3-1 - 이산시간 푸리에 급수와 푸리에 변환

이산 시간 푸리에 급수이산 신호와 샘플링이산시간 신호 $x[n]$ 은 정수 시점에만 값을 가진다. 이렇게 대괄호를 이용해서 이산 신호임을 표현할 수 있다.샘플링은 연속 신호를 일정한 시간 간격 $T$ 마다 값을 측정한 것을 말한다. 원본은 연속신호라고 하더라도 MCU 에서처럼 실제로 데이터를 처리하기 위해서는 연속신호를 일정한 주기마다 측정해 이산신호로 변환하여 사용한다.이산시간 푸리에 급수Discrete Time Fourier Series이산시간 푸리에급수는 정수 주기 N을 가지는 신호이다. 연속시간 푸리에의 수식과 유사하지만, 주기와 값이 있는 시점이 항상 정수라는 것이 차이점이다.이산 시간의 푸리에 급수는 아래와 같은 식을 가진다.$$x_N[n] = \sum_{k=0}^{N-1}a_ke^{jk\fr..

[신호및시스템] Phase 2-3 - 주파수 도메인 분석 - 함수의 푸리에 변환 적용

함수의 푸리에 변환delta 함수임펄스를 나타낼 때 사용하는 $\delta(x)$ 에 대한 푸리에 변환을 구하기$$\delta(x) \Leftrightarrow 1$$ㅤ$x(t-t_0)$$$x(t-t_0) \Leftrightarrow X(\omega)\cdot e^{-j\omega t_0}$$ㅤ$x(t) * h(t)$컨볼루전은 $x(t)$ 가 $h(t)$ LTI 시스템을 통과할 때의 출력을 구하는 것이라고 보면 됨$$x(t)_h(t) \Leftrightarrow X(\omega)_H(\omega)$$ㅤ$x(-t)$$$x(-t) \Leftrightarrow X(-\omega)$$ㅤ$x^*(t)$여기에서 *는 켤레복소를 찾는 것을 말함!$$x^*(t) \Leftrightarrow X^*(-\omega)$$ㅤ..

[신호및시스템] Phase 2-2 - 주파수 도메인 분석 - 푸리에 변환

푸리에 변환비주기함수란?비주기함수 : 신호의 주기가 $T\rightarrow \infty$ 인 주기함수푸리에 변환 식 구하기푸리에 급수는 아래 식의 형태로 표현이 된다. 무한개의 차원으로 구성된 공간에서 각 단위 벡터$e^{jk\omega_0t}$들이 얼마나($a_k$) 성분을 이루고 있는지를 더하여 구할 수 있음을 식으로 표현한 것이다.$$f(t) = \sum_{k=-\infty}^{\infty}a_ke^{jk\omega_0 t}$$$\omega_0$ : 각주파수 ${2\pi}\over{T}$$T$ : 주기$a_k$ : 푸리에 계수각각의 푸리에 계수는 아래 식의 형태로 표현할 수 있다. 하나의 주기 속에서 ($-{{1}\over{T}}$ ~ ${{1}\over{T}}$) 각 시점의 신호와 n 번째 단위..

[STM32] STM32에서 DHT11 로 온습도 측정하기

지난 번부터 STM 보드에서 DHT11 온습도센서를 연결해보려고 정말 갖은 노력을 다 했었다. 다만 저번에 찾아내 어찌저찌 실행을 해서 센서값을 받아왔던 코드의 경우에는 내가 거의 이해하지 못하는 방식으로 코드가 작성되어 있어서 “이거는 내가 다시 연구를 하면서 이해를 해야겠는데?” 라는 생각이 들던 코드였다.ㅤ마침 FND 코드를 추가하려다가 코드를 지워서 (날려먹어서) 새롭게 조금 더 이해하기 명료한 코드를 찾아서 구현해보려고 했다. 여러 게시글들과 유튜브 강의영상들을 찾아 돌아다녔는데, 아래 영상이 데이터 시트를 보는 방법부터 STM 핀 세팅, HW 빵판 선 연결, 코드 작성까지 모든 프로세스를 한 번에 자세하게 설명해주고 있어서 참고해 작성하였다. 사실상 저 영상의 내용을 정리하면서 공부했다. ht..

Embedded System/MCU 2025.09.29

[신호및시스템] Phase 2-1 - 주파수 도메인 분석 - 푸리에 급수

주기함수란?$T>0$ 인 어떤 $T$ 에 대해서, $x(t) = x(t + T)$ 를 모든 $t$에 대해 만족하는 함수.푸리에 급수내가 푸리에 급수에 대해서 배우게 될 줄이야… 내 인생이랑은 상관없는 녀석일 줄 알았는데, 학교 다닐 때 좀 더 브로드하게 공부를 해둘 걸 그랬다. 이전 글에서 테일러 급수에 대해서 공부했었다. 테일러 급수는 함수를 다항함수의 합으로 근사하여 풀어내는 방식을 말한다. 푸리에 급수는 테일러와 유사하게, ‘주기함수를 근사하는 것’을 목적으로 한다. 주기함수는 사이노소이드(Sinusoid)의 합으로 나타낼 수 있음이 알려져있다, 라고만 강의에서 하고 지나갔다. 나는 사이노소이드가 뭔지도 모르겠고, 그게 어떻게 주기함수를 표현해낼 수 있는지도 잘 모르겠어서 조금 더 찾아봤다.사이노소..

[신호및시스템] Phase 1 - LTI, Convolution 그리고 LCCDE

LTI와 ConvolutionLinear Time-Invarient SystemLinear의 특징Additivity : 가산$f(a+b) = f(a) + f(b)$Scaling : 비례$f(na) = nf(a)$SuperpositionAdditivity + Scaling의 성질이 결합$f(α⋅x1​(t)+β⋅x2​(t))=α⋅f(x1​(t))+β⋅f(x2​(t))$ㅤ실제 환경에서는 “동작 범위 내에서 Linear의 특성”을 보인다.예를 들어, 음악소리와 목소리가 함께 나오는 스피커는 Additivity를 보인다. 그리고 볼륨의 크기를 키우면 Scaling도 보인다.그러나 볼륨이 너무 커진다면 스피커가 찢어지는 소리를 낸다. 요게 Saturation 이 발생하는 것임.ㅤTime-Invariant (시불변성..

[신호및시스템] Phase 0 - 오일러(매클로린 급수)와 신호 추출

오일러 공식 배우는 이유매클로린 급수매클로린 급수는 오일러 공식의 특수한 상황에서 (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) = ..

[C언어] Implementation-Defined Behaviour

키워드Undefined Behaviour, Unspecified Behaviour, Implementation-Defined Behaviourㅤ프로그램의 이식성A 환경에서 실행하는 프로그램을 B 환경에서 실행하려고 할 때, 전환 과정에 노력이 덜 필요할수록 이식성이 좋다고 표현함. 이식성을 표현하기 위해 3가지 Behaviour(=Behavior)를 정의.ㅤex) Intel 맥에서 돌아가던 프로그램을 ARM 맥에서 돌리는 과정이 쉬운가?ㅤUndefined Behaviour코드가 어떻게 동작할지 보장하지 못하는 상태. 지금은 잘 동작하는 것처럼 보여도 다른 상황에서는 문제가 발생할 수 있다. 이식성 측면에서 가장 위험한 요소.ㅤUndefined Behaviour 의 경우, 컴파일러가 컴파일 자체를 실패시키..