본문 바로가기
반응형

전체 글322

DSP 옛날기억 끄적끄적 1. 주파수 분석 종류 주파수 분석에서 배운 기법들은 푸리에 시리즈푸리에 트랜스폼디스크리트 타임 푸리에 트랜스폼(DTFT)디스크리트 푸리에트랜스폼(DFT)총 4개가 있었음.  푸리에 시리즈는 주기적인 신호에 사용됨 푸리에 트랜스폼은 비주기적인 신호의 주파수성분을 분석할 때 사용됨 디스크리트 타임 푸리에 트랜스폼은 샘플링한 신호를 푸리에 트랜스폼함 마지막 DFT는 DTFT를 주파수 영역에서 한번 더 샘플링함. 그래야 컴퓨터에서 표현 가능하니깐    2. 플롯 주파수 영역을 플롯할 때 절대값을 플롯하는거랑 절대값 제곱을 출력하는 방법 두가지가 있음 절대값은 Amplitude 절대값 제곱은 Power 또는 Energy와 관련되어 있음 푸리에 트랜스폼은 비주기적인 신호를 다룸. 한마디로 얘는 파워가 0임. 고로.. 2024. 5. 17.
파이썬에서 fft를 출력할때 고려해야할 사항 1. fftshift와 fftfreq 그리고 plot 매틀랩에서는 fft데이터를 flot할 때 fftshift를 한번 해주고 plot했던 기억이 있다 이유는 DFT는 주파수 0에서 다음주기 주파수까지 샘플링 하기 때문이다. 하여 원 신호의 주파수 리스폰스(데칼코마니처럼 생긴거)를 보려면, fft한 결과를 반으로 잘라서 오른쪽에있는걸 왼쪽으로 옮겨주어야 한다. 이를 fftshift함수로 이용한다.   나비로 비유하자면, fft로 계산한 결과값은 나비 왼쪽날개가 오른쪽으로 가고, 오른쪽 날개가 왼쪽으로 가있는 상태라, 이를 fftshift로 옮겨주면 된다는말    헌데 파이썬에서는 굳이 fftshift를 안하고 데칼코마니 모양으로 플롯할 수 있다. 코드상 더 깔끔하다  fftfreq는 샘플갯수와 주파수 간격.. 2024. 5. 16.
DC 성분이란 (DC Component) 1. DC 성분이란? 어떤 센서로부터 데이터를 받아와서 fft를 하였더니 0hz에서 말도안되는 값이 피크친다. 이유는 다음과 같다. 센서의 데이터는 DC성분과 AC성분이 들어온다. DC성분은 직류 즉 0hz성분이다.  우리는 주파수 분석을 하고싶기에 AC성분이 필요한데, DC성분이 상대적으로 너무 크기에 값이 피크치는 것이다.   2. DC성분 제거하기  scipy에서 이러한 DC 성분을 제거하는 detrend라는 함수를 제공해준다.from scipy import signalsignal = np.array([your data here])signal_without_dc = signal.detrend(signal) 2024. 5. 14.
freezed 왜씀? dart data class를 사용하자! 1. Dart Data Class란? https://github.com/andrasferenczi/dart-data-plugin GitHub - andrasferenczi/dart-data-plugin: IDEA plugin for generating utility methods for Dart data classes IDEA plugin for generating utility methods for Dart data classes - andrasferenczi/dart-data-plugin github.com flutter에서 json 관련 클래스를 만드는건 아주 귀찮습니다. 이에 freezed를 많이 사용하는데요.. 사실 이 패키지도 몹시 불편합니다. 보일러플레이트 코드를 작성하고 거기다가 코드 제너.. 2024. 4. 16.
vim으로 flutter를 개발하는 원대한 꿈을 꿨다 vim으로 flutter를 개발하려는 원대한 꿈을 꿧다. 유튜브에서 한 외국인이 neovim으로 세팅한 영상을 보고 neovim 세팅에 대해 공부했다. 복잡한 세팅을 미리 다 해둔 nvchad와 lunarvim 같은 프로젝트 존재를 알게 되었고 nvchad 로 세팅을 마무리 하였다. 결과는 와우! 진짜 단축키 다 외우니 안드로이드 스튜디오보다 생산성이 훨씬 더 잘나왔다. vim flutter tools라는 플러그인은 생각보다 훨씬 잘 돌아갔고, lsp라는 프로토콜을 이용한 자동완성은 몹시 수준급이였다. 적어도 dart 영역에서는 말이다... 허나 나는 회사에서 네이티브 코드도 만질일이 있다. 이에 나는 코틀린과 스위프트까지 영역을 확장하려 했다. 거기서부터 문제였다. kotlin은 제대로 된 lsp가 없.. 2024. 3. 28.
NeoVim과 flutter 설정 먼저 nvim과 nvchad를 깔아준다 brew install nvim git clone https://github.com/NvChad/starter ~/.config/nvim && nvim 설치도중 permission error가 난다면 ~/.local/share와 ~/.local/state에 퍼미션 문제가 있다. chown -R 유저이름 nvim 을 해주어 권한을 가져오자 설치가 되었다면 아래 코드를 통해 lua lsp를 설치해주자. :MasonInstall lua-language-server 다음으로 ~/config/nvim으로 이동한다 그리고 lua/plugins/init.lua 파일을 연 뒤 flutter-tools 를 설치해준다 { 'akinsho/flutter-tools.nvim', lazy.. 2024. 3. 27.
Xcode에서 SwiftUI 코드선택 익숙해지기 1. 개요 안드로이드 스튜디오에서는 expand selection이라는걸 제공한다.커서기준으로 범위를 확장하면서 선택해주는 기능인데 flutter 개발할 때 매우 유용하다. 현재 내 커서가 위치한 위젯의 범위를 정확하게 선택가능기에 위젯들을 마치 레고 조립하듯이 코드를 작성할 수 있다. 헌데 Xcode에서는 그런 기능이 없다는것을 알았다... 너무 불편하다. 그래서 방법을 찾은 결과 결국 해답은 vim에 있었다. 2. 선택방법 여러가지 Va{ 혹은 Va}, vaBb 을 하면 플러터에서 하듯이 뷰의 전체를 선택가능하다 실제 vim에서는 vaBV를 해야한다. 고로 vaBV로 연습하자 va{ 혹은 va}, vaB을 하면 중괄호를 포함한 뷰의 바디부분을. 선택할 수 있다 vab는 소괄호 선택 vaB는 중괄호 선.. 2024. 3. 22.
[Swift] PropertyWrapper 사용법 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/properties/ Documentation docs.swift.org 1. PropertyWrapper란? 파이썬의 데코레이션과 비슷하다. 파이썬의 데코레이션은 코드 앞뒤로 어떠한 코드를 붙여주는 작업을 해준다. 프로퍼티 래퍼또한 비슷하다. 어떤 프로퍼티 앞뒤로 특정한 작업을 넣을 수 있다. 2. 만드는법 만드는 방법은 간단하다. 1. struct를 정의할 때 @PropertyWrapper라고 적어준다 2. struct안에 wrappedValue라는 computedProperty를 정의해주면 된다 아래는 범위가 12까지인 프로퍼티를 프로퍼티 래퍼를 이용해 구현하.. 2024. 3. 22.
[SwiftUI] StateObject, ObservedObject, EnvironmentObject 1. StateObject, ObservedObject란 값이 아닌 참조타입(클래스) 형태의 State를 관리할 때 사용된다. private으로 선언되어야 한다. memberwise initializer에서 설정되는걸 막기위한것 @Published 프로퍼티 래퍼를 사용한다 ObservableObject 프로토콜을 따른다 처음 한번 생성되면 뷰 라이프사이클 상관없이 계속해서 유지된다. 처음 이걸보고 struct로 이루어진 State와 뭐가다르지? 라고 생각하고 자료를 찾아봤는데... 명확하게 답변해주는 토픽이 하나도 없었다. 단지 class는 reference 타입이라는 점이 가장 큰 차이. 그 외에도 class가 struct 대비 가지고 있는 장점들이 워낙 많으니 그러한 차이들이 struct state와.. 2024. 3. 21.
반응형