반응형

분류 전체보기 764

이산 시간 푸리에 시리즈란? 계수 값 유도하기(Discrete Time Fourier Series, ak, DTFS)

목차 해당 글은 유투브 혁펜하임을 참조해서 작성했습니다. 이산 시간 푸리에 시리즈란(Discrete Time Fourier Series, DTFS)? 앞서 연속 시간 푸리에 시리즈는 테일러 시리즈와 유사하게 사인 함수의 합으로 수식(1)과 같이 표현 됨을 알아보았습니다. 그리고 푸리에 시리즈의 계수(coefficient) 값은 오일러 함수가 서로 직교성(orthogonality)을 가지는 성질을 이용해서 내적을 통해 유도 해냈습니다https://scribblinganything.tistory.com/634. 이산 푸리에 시리즈(Discrete Time Fourier Series, DTFS)도 유사하게 구할 수 있습니다. 우선 DTFS를 표현하기 위해 주기를 표현 해야하는데 이산 도메인은 CTFS에서 ω를..

[라즈베리파이]웹 제어로 LED켜고 끄기(web server, remote control, flask)

목차 Raspberry Pi 웹서버에서 LED 제어하기 이번에는 보드의 GPIO23번 핀에 LED를 연결하고 flask를 사용해서 웹서버를 구동합니다. 외부에 노트북을 사용해서 해당 웹서버(Web server)에 접속하고 브라우저에 나온 버튼을 클릭하여 LED를 켜고 끄는 시험을 해보겠습니다. 하드웨어 연결은 아래와 같이 합니다. 원래 GPIO23번 핀과 GND 사이에 1kohm 저항(Resistor)을 둬서 LED를 보호해야 하나 귀찮아서 다이렉트로 연결했습니다. LED를 오래 쓰실려면 꼭 저항을 직렬로 연결해주세요 전체 코드>> #!/usr/bin/python3 from flask import Flask, render_template_string import RPi.GPIO as GPIO GPIO.s..

[라즈베리파이] Polling과 Interrupt로 입력 신호 받기(폴링, 인터럽트)

Raspbeery Pi Polling으로 입력 신호 받기 폴링(Polling) 방식은 지속적으로 해당 입력 신호쪽에 값을 기다리면서 값이 들어올때 값을 처리하는 방식입니다. 그렇기 때문에 비효율적인 방식입니다. 아래는 폴링(Polling) 방식의 특징입니다. 폴링을 시행하면 보드의 다른 코드를 진행할 수 없음 지속적으로 모니터링하여서 전력을 상대적으로 많이 사용 실제 폴링으로 동작하는 예제 코드를 통해 쉽게 이해해 보도록 하겠습니다. 해당 코드는 라즈베리파이 보드에서 나가는 5V신호와 접지(Ground) 신호를 저항 10kohm으로 GPIO23번 핀에 연결했다가 떨어뜨렸다가 하는 식으로 마치 버튼을 동작하는 것처럼 조작해서 이를 카운트하는 코드 입니다. 카운트 값은 print로 보드에서 확인할 수 있습니..

[라즈베리파이] GPIO란? LED 켜기&끄기, 핀맵(Pinmap, Pinout)

목차 Raspberry Pi GPIO란? 핀맵 라즈베리파이(Raspberry Pi)와 같은 임베디드(Embedded) 보드는 내부에 MCU 칩이 있고 칩을 프로 그램해서 외부 장치들로 부터 센서의 신호를 읽거나 제어를 위해 출력 신호를 보냅니다. 이때 입출력 신호를 주고 받을 수 있는 핀들을 GPIO(General Purpose Input/Output)이라고 합니다. 외부 장치와 입출력 신호를 주고 받는 핀 GPIO 핀 제어를 위해 임베디드 보드 내에 레지스터(Register)에 값을 입력하여 사용 일반적으로 LED 구동 전력 정도의 파워를 공급 제가 가지고 있는 라즈베리파이 4 보드의 핀맵(Pin Map)은 아래와 같습니다. Raspberry LED 켜기&끄기(하드웨어) 이번에는 앞서 핀아웃을 사용해서..

[Python]엑셀의 동일한 값 몇 개 인지 카운트 Pandas에서 쉽게 처리하기(판다스, 숫자, 텍스트, 중복 삭제)

목차 파이썬 Excel의 동일한 값 개수 세기 이번에는 제목 그대로 엑셀의 동일한 값의 개수를 Count 하는 방법에 대해 알아보겠습니다. 처음에는 엑셀(Excel)로 처리하려고 하였지만 방법을 찾기가 어려워서 파이썬(Python)의 판다스(Pandas) 한줄로 간단하게 해결 하였습니다. 우선 저에게 주어진 과제는 아래와 같습니다. 위와 같이 엑셀 파일에 지역명이 텍스트로 적혀있는데 동일 지역명을 검출하고 각 지역명이 몇개로 구성되었는지를 확인하는 것이었습니다. 위는 간략한 예제이고 실제 값은 몇 천개 정도 있었습니다. 위와 같은 과제는 사실 엑셀로 처리하기 쉽지 않습니다. 그래서 저는 간단하게 아래와 같이 파이썬을 사용해서 처리하였습니다. 전체 코드>> import pandas as pd df = pd..

[푸리에 변환]미분, 적분 방정식 주파수 변환 문제 풀이

목차 해당 포스트는 유투브 혁펜하임을 참조해서 작성하였습니다. 미분식 dx(t)/dt 푸리에 변환(Fourier Transform)하기 미분식 dx(t)/dt를 푸리에 변환 수식으로 전개해서 푸는 방법 보다는 역푸리에변환(Inverse Fourier Transform)을 이용해서 쉽게 풀이할 수 있습니다. 수식(1)은 역푸리에 변환 수식입니다. 푸리에 변환은 1대1 변환이 가능하기 때문에 역푸리에 변환값을 구하면 변환 전 값을 알 수 있습니다. 수식(1)을 t에 대해 미분하겠습니다. 수식(1)의 우변은 오메가(ω)로 적분 되기 때문에 오일러 지수의 t 부분만 미분을 하면 됩니다. 수식(2)에서 빨간색 부분이 미분식에 1대1 매칭이므로 미분식에 대한 푸리에 변환 값은 jwX(w)가 됩니다. 미분식 dx(t..

공분산, 상관 계수, 정규화, Cross correlation, Convolution, Coherence란? 비교 분석(통계, 신호처리)

목차 공분산(Covariance)이란? 두 개의 확률 변수 사이에 상관성을 방향과 크기로 표현하는 방식입니다. 수식(1)과 같이 각 i 포인트에서 x와 y 값이 평균에서 떨어진 정도를 곱한 값입니다. x, y의 편차 정도가 비슷할 수록 곱에 의한 값이 커집니다. 그리고 편차의 방향이 하나는 양수 하나는 음수일 경우 방향은 반대로 표기 되고 같은 방향으로 진행되면 양수로 표기 됩니다. 예를 들어 한 학급에서 학생의 키와 몸무게를 측정하고 키와 몸무게의 공분산을 확인할 경우 전체 키 평균은 170cm이고 몸무게가 68kg 일때 A학생의 키가 175cm이고 몸무게가 70kg이면 (175-170) x (70-68) 을 계산해서 다른 학생들과 합해 주는 것이 공분산입니다. 위 그림(1)과 그림(2)를 비교하면 그..

[Python] Pyside 메뉴바 만들기(Menu bar)

목차 파이썬 Pyside 메뉴바 만들기(Menu bar) GUI 프로그램을 보면 파일 저장, 불러오기 등 이러한 기능을 위쪽 상단에 메뉴 선택으로 만들어져 있음을 볼 수 있습니다. 이번 포스트는 Menu drop을 어떻게 만드는지를 알아보겠습니다. 우선 전체 코드로 결과와 함께 보여 드리고 주석으로 설명 드리겠습니다. 전체 코드>> from PySide6.QtWidgets import QMainWindow, QApplication, QLabel, QToolBar, QStatusBar, QCheckBox from PySide6.QtGui import QAction, QIcon, QKeySequence from PySide6.QtCore import Qt, QSize import sys class Qt_Ex..

푸리에 변환 테이블(Impulse, 델타함수, 컨볼루전, 컬레복소수, Duality) 증명

목차 해당 포스트는 유투브 혁펜하임을 참조해서 작성하였습니다. 이번 내용은 주로 사용하는 함수의 푸리에 변환 값을 확인해 보겠습니다. 푸리에 변환은 아래 수식(1)과 같습니다. 변환 방법은 링크를 참조하시면 됩니다(https://scribblinganything.tistory.com/635). 델타함수(Delta Function, Impulse Fuction) 푸리에 변환 δ(t) 함수는 위와 같이 0에서 임펄스(Impluse)인 신호 입니다. 이를 푸리에 변환(Fourier Transform)을 하게 되면 아래와 같습니다. 무한대 적분이라도 나머지 구간에서는 0이고 0에서 무한대 임펄스 적분이므로 해당 값은 1이 됩니다. 즉, 모든 주파영역에 1의 값을 가집니다. x(t-t0)함수 푸리에 변환 역푸리에..

[Python] Pyside 레이아웃 설정, 수직, 수평, 겹치기, 그리드(Layout, Vertical, Horizontal, Stack, Grid)

목차 Pyside는 최신 Pyside6를 사용했음을 알려드립니다. 파이썬 Pyside 레이아웃 설정: 수직(Vertical) 이번 포스트에서는 레이아웃(Layout) 설정에 대해 알아보겠습니다. 수직 레이아웃은 QVBoxLayout 객체를 사용해서 설정합니다. 아래 전체 예제 코드와 결과를 확인하고 코드에 대한 설명을 드리도록 하겠습니다. 수직 배치 예제 코드>> import sys from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout from PySide6.QtGui import QPalette, QColor from PySide6.QtCore import QSize class Set_color(QWidget): de..

반응형