본문 바로가기

분류 전체보기

(284)
Notepad++에서 작성한 한글이 cmd에서 깨질 때 C나 C++에서 한글이 print 되도록 했는데, cmd에서 실행했을 때 깨져서 나온다면, 대부분 인코딩 불일치 때문이다. Notepad++와 cmd 창의 인코딩 종류를 일치시켜주면 해결된다. 해결 방법 Notepad++과 cmd창 모두 인코딩을 같은 것으로 맞춰준다. (예를 들어 UTF-8로 통일) 1. Notepad++에서의 인코딩 설정 방법 "인코딩" 메뉴에서 "UTF-8"이 설정되어 있는지 확인한다. 만약 안되어 있으면 "UTF-8"로 설정 2. cmd 창에서의 인코딩 설정 1) cmd 창을 연다 "윈도우키 + R" 키를 누르고, "실행" 창에서 "cmd"라고 타이핑 후 "확인" 버튼 누른다. 2) cmd 창에서 "chcp 65001"이라고 타이핑하고 엔터 chcp 명령은 "chnage code ..
[07-6 Code] FFT program for Java This page introduce FFT sourece code. There are 4 java soure file and 1 text file. - fourier/FFT.java - fourier/Complex.java - fourier/CMath.java - test/Test_FFT.java - data/input.txt 1. fourier/FFT.java package fourier; public class FFT { private static double log2(double a) { return Math.log(a) / Math.log(2); } /** * Check the number is power of 2 or not. * @param N * @return * 0 : it is power..
07-6. Java로 FFT 알고리즘 충실히 구현하기 이번 페이지에서는 FFT 알고리즘을 Java 언어의 특성을 충실히 살리면서, 읽을 수 있는 수준의 알고리즘 구현을 해보고자 한다. Java 언어의 특성을 살린다는 의미는, 복소수의 표현을 Complex라는 객체를 만들어서 사용함으로써 표현의 간단함과 확장성을 늘리고, 에러 처리를 Exception을 사용해서 하고, 메서드 오버로딩을 통해서 fft의 다양한 호출이 가능하게 한다는 의미. 읽을 수 있는 수준의 알고리즘이라는 것은, FFT의 구현을 각 의미있는 부분에 대해 별도의 메서드를 만들어서 구분되게 하고, 가능한 알고리즘에서 표현된 방법으로 코딩을 했다는 의미이다. 그러나, 위와 같이만 하면 속도에 손해를 보기에, 수행 속도에 지대한 영향을 끼치는 부분은 코드 가독성이 좀 떨어지더라도, 효율적인 코드로..
[07-5 Code] Fastest FFT code for Java This page introduce very fast FFT code for Java. It will execute FFT calculation for 64 kBytes input data in 10ms. Execution result of Test_FFFT class ** test_simple_fft ** 8.0, 0, -2.0+4.82842712474619i, 0, 0, 0, -2.0+0.8284271247461898i, 0, 0, 0, -1.9999999999999998-0.8284271247461898i, 0, 0, 0, -1.9999999999999993-4.82842712474619i, 0, ** test_measure_time ** Execution Time(32kB): 5ms [0]17.4..
07-5. 가장 빠른 Java용 FFT 구현해보기 이 페이지는 Java로 구현하는 FFT, 그것도 수행 속도를 빠르게 하는 것에 목적을 둔 프로그래밍 코드를 소개한다. 전체 소스코드는 여기 참조 앞 페이지에서 엑셀로 만드는 FFT의 경우는, 속도는 느리지만 엑셀 자체에서 데이터를 다루거나 분석을 하고, 그래프를 그리고 등 부가적인 기능으로 해서, 필요성이 있어 FFT 프로그램을 만들어서 소개했다. Java로는 만들 생각을 안했었다. FFT가 주로 쓰이는 것이, 연구 목적으로 신호를 분석하거나(그래서 엑셀에서의 FFT가 유용), 실시간으로 신호를 FFT 변환을 해야 하는 것이기에, C나 C++을 이용해서 코드 수행을 빠르게 하는 게 중요하지, Java 같은 Virtual Machine 기반의 언어로는 유용성이 떨어질 것이기 때문이다. 그런데, 안드로이드에..
[07-4 Code] Fastest FFT code for Excel VBA This page explain FFT program made for Excel VBA. It is no limit of input data size, therefore you can calculate over 4096 size data and it will perform very fast. FFT Execution time in the Excel by self-made FFT program Computer Specification: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz Input data count FFT execution time [ms] 4 kBytes(4096) 62 8 kBytes 115 16 kBytes 235 64 kBytes 984 I thin..
07-4. 엑셀에서 직접 FFT 프로그램 만들기 이 페이지에서는 엑셀 VBA를 이용해서 FFT 프로그래밍을 하는 것을 설명할 것이다. 사실 엑셀에서 FFT 프로그래밍을 직접 한 것은 구글링을 해봐도 별로 없다. 없다는 것은 다 그 이유가 있는데, 가장 큰 이유는 굳이 따로 프로그래밍할 필요가 없다일 것 같다. 속도도 느린 엑셀 VBA를 이용해서 굳이 FFT를 해야 할 일도 없겠고, 또한 엑셀 자체로 FFT 함수가 있으니깐. 그렇지만, 내게는 다음과 같은 작성 이유가 있다. 신호 데이터를 분석하거나 할 때 엑셀만큼 좋은 툴이 없다. 해서, FFT도 엑셀에서 바로 수행하고, 그 결과 데이터를 엑셀에서 분석하면서 인사이트를 얻고 하면 좋겠다. 근데, 엑셀에 있는 FFT 함수는 4096개 데이터가 한계다. 그 이상의 데이터는 처리할 수 없다. 4096으로는 ..
07-3. 엑셀에서 FFT 계산하기 (엑셀 자체 FFT 기능) 엑셀에는 FFT 계산을 할 수 있는 기능이 있다. 디폴트 기능으로 오픈되어 있는 것은 아니고, 사용할 수 있도록 몇 가지 설정을 하면 FFT 계산을 할 수 있다. 엑셀에서 FFT 기능 활성화 하기 1. 엑셀 메뉴에서 "파일 - 옵션" 선택하고, "추가 기능"에서 "관리" 부분에서 'Excel 추가 기능'에 대해 "이동" 클릭 2. "추가 기능"에서 "분석 도구 - VBA"를 체크하고 "확인" 버튼 누른다. 이제 엑셀에서 FFT 함수를 사용할 수 있다. 엑셀에서 FFT 기능 사용해서 값 구하기 $y(n)={0,0,0,0,1,1,1,1}$에 대해 FFT를 수행해서 푸리에 변환값 $Y(k)$를 구해보자. 1. $y(n)$값을 아래와 같이 엑셀에 입력한다. 2. 엑셀 메뉴에서 "데이터" 선태하고, 우측 상단에 ..
07-2. FFT 예제를 손으로 풀어보며 이해하기 $y(n)={0,0,0,0,1,1,1,1}$인 값에 대해 FFT 수식을 이용해서 단계별로 손으로 문제를 풀듯이 계산해보자. 먼저 이 값을 DFT 수식을 이용해서 엑셀에서 구해보면 다음과 같다. $$ DFT: \; \; Y(k)=\sum_{n=0}^{N-1}{y(n)e^{-i\frac{2\pi}{N}kn}}, \; \; 0\leq k < N \tag {1} $$ $$ IDFT: \; \; y(n) = \frac{1}{N} \sum_{k=0}^{N-1}Y(k) e^{i\frac{2\pi}{N}kn}, \; \; 0 \le n < N \tag{2} $$ FFT를 이용해서 구해보자. FFT의 수식은, $$ \begin{align}Y(k) = P(k) + W^kQ(k), \; &0 \le k \le {\frac{..
02. 엑셀로 WAV 파일 읽기 이번 글에서는 엑셀에서 WAV 파일을 읽어서, 해당 WAV 파일의 헤더 정보를 보여주고, 실제 소리 데이터를 엑셀 데이터로 만들어주는 프로그램을 짜 볼 것이다. 소리 신호에 대한 분석을 할 때 WAV 파일 정보를 보고자 할 때, 혹은 소리 데이터를 가지고 엑셀에서 가공하고 분석하고자 할 때 유용할 것으로 생각한다. 수행 방법 1. "WAV File Reader.xlsm" 파일을 열고, "Select WAV File" 버튼 클릭 2. 읽을 WAV 파일 선택 3. 새로운 엑셀 문서가 생성되고 WAV 파일 읽을 결과가 표출 됨. 데이터가 너무 커서 한 프레임에 표시 못하는 경우, 여러개의 프레임으로 표출한다. 한 개 프레임의 Row 크기는 100만개 엑셀 파일 (WAV File Reader.xlsm): -끝-