시간이 훅훅 지나가네
언제 자전거 타지 ㅜㅜ 추워어어
'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글
스피커 줍줍 (0) | 2023.04.12 |
---|---|
줍줍 (0) | 2023.04.11 |
수의사 처방제 확대시행 (0) | 2023.04.05 |
벚꽃구경 (0) | 2023.04.02 |
심장 사상충약 투약! (0) | 2023.03.17 |
시간이 훅훅 지나가네
언제 자전거 타지 ㅜㅜ 추워어어
스피커 줍줍 (0) | 2023.04.12 |
---|---|
줍줍 (0) | 2023.04.11 |
수의사 처방제 확대시행 (0) | 2023.04.05 |
벚꽃구경 (0) | 2023.04.02 |
심장 사상충약 투약! (0) | 2023.03.17 |
x 축은 real(실수)
y 축은 imagenary(허수)
그래서 arctan(허수/실수) 하면 각도를 radian으로 구할수 있다.
javascript 기준으로는
Math.atan() * 180 / Math.PI 하면 각도로 전환가능
θ = tan- 1 (b/a) |
[링크 : http://sites.music.columbia.edu/cmc/MusicAndComputers/popups/chapter3/xbit_3_3.php]
역시나 언제나 그렇듯 radian 값
[링크 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan]
fft 라이브러리 목록 (0) | 2023.06.01 |
---|---|
fftw 다차원 분석 (0) | 2023.05.27 |
fftw input range? (0) | 2023.04.07 |
fft 복소수(complex) - 실수, 허수부(real, imaginary) (0) | 2023.04.07 |
fft 0 Hz (2) | 2023.04.05 |
chatGPT는 아래와 같이 대답을 하는데 근거가 없어서 불안하고
The input float range for FFTW depends on the specific implementation and the configuration of the library. However, in general, the input float values should be within the range of -1.0 to 1.0, which represents the normalized range of the input signal. |
stackoverflow는 과거 글이긴 한데.. 미묘..
Surprisingly there is no single agreed definition for the FFT and the IFFT, at least as far as scaling is concerned, but for most implementations (including FFTW) you need to scale by 1/N in the forward direction, and there is no scaling in the reverse direction. Usually (for performance reasons) you will want to lump this scaling factor in with any other corrections, such as your A/D gain, window gain correction factor, etc, so that you just have one combined scale factor to apply to your FFT output bins. Alternatively if you are just generating, say, a power spectrum in dB then you can make the correction a single dB value that you subtract from your power spectrum bins. |
[링크 : https://stackoverflow.com/questions/4855958/normalising-fft-data-fftw]
일단은 실험!
1. 원본 데이터 그대로
+-1V / 1.001Khz
-600,000 ~ +600,000 범위로 들어오는 값을 그대~~~로 FFT로 던지니 결과가 이상하게 나온다.
2. 원본 / 1000
범위를 벗어나진 않아서 그런가 정상적으로 그나마 주파수 분석이 되는 듯
3. 원본 / 100
/ 1000 이랑 비슷하긴 한데 비율 때문에 그런가 중심 주파수 주변에 좀 높게 나온다.
그냥 나누기 만큼의 억제효과가 나오는 듯?
4. 원본 / 838607 (0x7FFFFF 왜 이런 값을 했지.. 홀렸나..)
주파수 분석결과를 확대해보면 /1000 보단 깨끗하게 분석된다.
5. 원본 + 100mV
FFT 값에 2,147,483이 나와서 16진수로 바꾸어 보니 0x20C49B
무슨 의미를 지닌 분석이라고 보기 힘든데 그래도 1000 근처에 좀 비어있는거 보면 어떻게 해석해야 하나 싶다.
6. 원본 / 24bit(0xFFFFFF)
아 몰랑 걍 -1.0 ~ 1.0 사이로 정규화 할래!
fftw 다차원 분석 (0) | 2023.05.27 |
---|---|
fft phase 연산 (0) | 2023.04.07 |
fft 복소수(complex) - 실수, 허수부(real, imaginary) (0) | 2023.04.07 |
fft 0 Hz (2) | 2023.04.05 |
partial fft (0) | 2023.04.04 |
내 프로그램에서도 한번 도식화 해볼까?
amplitude만 보는데 real 값과 imaginary 값은 어떻게 보여질지 궁금해서 찾아보는데
그렇게는 잘 안써서 그런지 그림도 찾기 힘들다.
[링크 : https://stackoverflow.com/questions/25624548/fft-real-imaginary-abs-parts-interpretation]
+
부랴부랴 수정해서 확인해보니 실수부, 허수부는 * 100,000 해서 받아와서 표현
일단 네 가지 데이터가 오가면서 출력되는데 이걸 phase 라고 보야하려나?
실수, 허수 둘 다 양수
실수, 허수 둘 다 음수
실수 양수, 허수 음수
실수 음수, 허수 양수
fft phase 연산 (0) | 2023.04.07 |
---|---|
fftw input range? (0) | 2023.04.07 |
fft 0 Hz (2) | 2023.04.05 |
partial fft (0) | 2023.04.04 |
fftw plan (0) | 2023.03.31 |
그냥 무광 검정으로 하니 썩 나쁘진 않은데
10분도 안걸려서 급조한거라 끝부분 마감은 영 아쉬움
결론은... 역시 삼성은 삼성 로고가 안티야..
가리니 더 이뻐 보임
미니 컴퓨터 만들기는 험란하다 (0) | 2023.06.06 |
---|---|
CPU fan은 그냥 DC 팬이 아니다 (0) | 2023.06.06 |
키보드 수리 (0) | 2023.02.20 |
키보드 부분 고장. 윈도우 키가 불편해!? (0) | 2023.02.18 |
중고 노트북 택배거래 성공! (0) | 2023.01.07 |
내부적으로 이렇게 처리할 줄이야..
A number literal like 37 in JavaScript code is a floating-point value, not an integer. There is no separate integer type in common everyday use. (JavaScript also has a BigInt type, but it's not designed to replace Number for everyday uses. 37 is still a number, not a BigInt.) |
[링크 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number]
canvas 없는 getcontext (0) | 2023.07.12 |
---|---|
html canvas와 시간 그래프 흘리기 (0) | 2023.07.06 |
websocket binarytype (0) | 2023.04.04 |
자바스크립트 소수점 자르기 (0) | 2023.03.13 |
Math.min.apply() (0) | 2023.02.07 |
한번 빌드해서 원하는 결과만 덤프하는 용도로 수정이 가능하려나?
[링크 : https://github.com/GStreamer/gstreamer/blob/main/subprojects/gstreamer/tools/gst-inspect.c]
gst-inspect 에서 원하는 정보는 아래의 Pad template 부분
Pad Templates: SINK template: 'sink_%u' Availability: On request Capabilities: video/x-raw format: { (string)AYUV, (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)Y444, (string)Y42B, (string)YUY2, (string)UYVY, (string)YVYU, (string)I420, (string)YV12, (string)NV12, (string)NV21, (string)Y41B, (string)RGB, (string)BGR, (string)xRGB, (string)xBGR, (string)RGBx, (string)BGRx } width: [ 1, 2147483647 ] height: [ 1, 2147483647 ] framerate: [ 0/1, 2147483647/1 ] SRC template: 'src' Availability: Always Capabilities: video/x-raw format: { (string)AYUV, (string)BGRA, (string)ARGB, (string)RGBA, (string)ABGR, (string)Y444, (string)Y42B, (string)YUY2, (string)UYVY, (string)YVYU, (string)I420, (string)YV12, (string)NV12, (string)NV21, (string)Y41B, (string)RGB, (string)BGR, (string)xRGB, (string)xBGR, (string)RGBx, (string)BGRx } width: [ 1, 2147483647 ] height: [ 1, 2147483647 ] framerate: [ 0/1, 2147483647/1 ] Element has no clocking capabilities. Element has no URI handling capabilities. |
Pad Templates를 출력하는 함수
static void print_pad_templates_info (GstElement * element, GstElementFactory * factory) |
[링크 : https://github.com/GStreamer/gstreamer/blob/main/subprojects/gstreamer/tools/gst-inspect.c#L816]
Capabilities 부분을 출력하는 함수
static void print_caps (const GstCaps * caps, const gchar * pfx) |
[링크 : https://github.com/GStreamer/gstreamer/blob/main/subprojects/gstreamer/tools/gst-inspect.c#L194]
gst-device-monitor-1.0 (0) | 2023.12.06 |
---|---|
gstremaer videobox + videomixer (0) | 2023.04.10 |
gstreamer videomixer 반쪽 성공 (0) | 2023.03.27 |
gstreamer videomixer ... 2? (0) | 2023.03.27 |
gstreamer pad - sink 와 src (0) | 2023.03.27 |
정리하자면
FFT를 100개 하면, 1~50 Hz와 0Hz에 대한 분석 결과가 나온다.
그래서 N / 2 + 1개
---
도대체 왜 N/2+1이 나오나를 찾는데 이해를 못하겠다.
For a real-to-complex transform you get N / 2 + 1 complex outputs for N real inputs (the redundant symmetric outputs are not generated). The 0 Hz component is in bin 0. |
Now out contains r0, r1, r2, ..., rn/2, i(n+1)/2-1, ..., i2, i1 , as it is written in the manual. r0 ,out[0],is the mean value of your data/signal. r1 ,out[1],is the real part of the first element of the DFT. ... i0 is 0 because you're using real data , so it isn't stored in out. i1 ,out[N-1],is the imaginary part of the first element of the DFT. i2 ,out[N-2],is the imaginary part of the second element of the DFT. If N is a even number , then r(N/2) out[N/2] is the Nyquist frequency amplitude. Im new to fftw library Remember that FFTW computes only the product of your data by the trigonometric functions, but it don't normalize them. You can find more info about the halfcomplex here. |
[링크 : https://kr.mathworks.com/matlabcentral/answers/42325-fft-is-finding-a-max-amplitude-at-0-hz]
chatGPT
The reason that the Fast Fourier Transform (FFT) in the library FFTW produces a result of N/2+1 values when applied to real input data of length N is because of the way that the FFT algorithm works. In FFTW, the FFT algorithm used is called the "real-to-complex" FFT, which takes real-valued input data and produces complex-valued output data. When applied to real input data, the algorithm takes advantage of the symmetry properties of the Fourier transform of real-valued signals. Specifically, the Fourier transform of a real-valued signal is complex-conjugate symmetric, meaning that if x(t) is a real-valued signal, then its Fourier transform X(f) satisfies X(-f) = conj(X(f)), where "conj" denotes complex conjugation. Because of this symmetry property, half of the output values of the FFT algorithm are redundant, and can be calculated from the other half. Specifically, the output values for frequencies from 0 to N/2 are unique, while the output values for frequencies from N/2+1 to N-1 can be calculated as the complex conjugate of the corresponding frequency from 1 to N/2-1. Therefore, to save computation time and memory, FFTW only calculates the unique output values for frequencies from 0 to N/2, as well as the value for frequency N/2 (if N is even). This results in a total of N/2+1 output values. |
FFTW 라이브러리에서 Fast Fourier Transform (FFT)를 적용하면, 길이가 N인 실수 입력 데이터에 대해 복소수 출력 데이터 N/2+1개가 생성됩니다. 이는 FFT 알고리즘이 동작하는 방식 때문입니다. FFTW에서 사용되는 FFT 알고리즘은 "real-to-complex" FFT라고 불리며, 실수값 입력 데이터를 복소수값 출력 데이터로 변환합니다. 이 알고리즘은 실수값 신호의 푸리에 변환의 대칭성(symmetric) 특성을 활용합니다. 구체적으로, 실수값 신호 x(t)의 푸리에 변환 X(f)은 X(-f) = conj(X(f)) 라는 복소수 공액대칭성(complex-conjugate symmetric)을 만족합니다. 여기서 "conj"는 복소수 공액(conjugate)를 의미합니다. 이 대칭성 특성 때문에 FFT 알고리즘의 출력값 중 절반은 중복되는 값이며, 나머지 절반은 이 중복된 값들로부터 계산될 수 있습니다. 구체적으로, 0부터 N/2까지의 주파수 대역에서는 고유한 출력값이 존재하며, N/2+1부터 N-1까지의 주파수 대역에서는 대응하는 1부터 N/2-1까지의 주파수 대역의 복소수 공액값을 계산하여 구할 수 있습니다. 따라서 FFTW는 연산 시간과 메모리를 절약하기 위해, 0부터 N/2까지의 주파수 대역에 대한 고유한 출력값과, N이 짝수인 경우 주파수 N/2에 대한 출력값을 계산합니다. 이렇게 계산된 출력값의 총 개수는 N/2+1개가 됩니다. |
The DFT results are stored in-order in the array out, with the zero-frequency (DC) component in out[0].
+
2023.06.16
Size of FFT in 1D is not half of the signal length. It's still the signal length (assuming FFT length was of the signal length). However for real data, due to conjugate symmetry, half of this is redundant and can be dicarded to reduce storage. Note however that, when it's required to process the FFT data, you have to construct the full length from the half and proceed. This is also the reason why spectral analysis software display only positive frequencies for real data; i.e, negative frequencies will be a mirror copy (of the magnitude) of positive frequencies. But you don't have to discard the half. You can just retain it. For image processing, the symmetry of FFT for real input data again exist and if you wish you can also dicard half of the image FFT data. Whether this will be employed or not depends on the intentions of the package. |
[링크 : https://brianmcfee.net/dstbook-site/content/ch06-dft-properties/Conjugate-Symmetry.html]
fftw input range? (0) | 2023.04.07 |
---|---|
fft 복소수(complex) - 실수, 허수부(real, imaginary) (0) | 2023.04.07 |
partial fft (0) | 2023.04.04 |
fftw plan (0) | 2023.03.31 |
libfftw3 precision (0) | 2023.03.30 |
22년 11월 13일 부터 약국에서 종합백신을 판매할 수 없도록 법이 바뀌었다고 한다.
머 병원에서 주사를 놔야 하는게 당연하긴 한데.. 동물병원이 너무 비싸다 보니 오히려 백신을 안 놓게 되는 일이 발생할 것 같네..
오는 11월 13일부터 동물약국에서 반려견 4종 백신(DHPPi), 반려묘 3종 백신(FVRCP)을 수의사 처방전 없이 판매할 수 없게 됐다. 수의사 처방제가 확대시행됐기 때문이다. 만약 약국에서 개 종합백신, 고양이 종합백신을 처방전 없이 판매하면 약사법 위반으로 1년 이하의 징역 또는 1천만원 이하의 벌금에 처하게 된다. ... 개 5종 백신(DHPPL), 고양이 4종 백신, 5종 백신이 이미 2018년부터 처방대상이었던 점을 고려하면, 사실상 반려견·반려묘의 백신(생물학적제제)의 약국 판매가 금지되는 것이다. 수의사 처방전이 있으면 백신을 구입할 수 있으나, 처방전을 받기 위해서는 동물병원에서 수의사의 진료를 먼저 받아야 한다. |
[링크 : https://www.dailyvet.co.kr/news/practice/companion-animal/174690]
2년 유예기간을 거쳐 오는 11월 13일부터 동물약국은 주사용 항생‧항균제, 일부 생물학적제제의 경우 반드시 수의사 처방전을 받고 판매해야 한다. 즉 항생제 주사제, 광견병 백신, 개 종합백신 3가지만 수의사 처방전이 필요하다는 것만 기억하면 된다. |
[링크 : http://www.dailypharm.com/Users/News/NewsView.html?ID=292399]
줍줍 (0) | 2023.04.11 |
---|---|
청소조금 (0) | 2023.04.08 |
벚꽃구경 (0) | 2023.04.02 |
심장 사상충약 투약! (0) | 2023.03.17 |
노랫만에 한강 나들이 (0) | 2023.02.26 |
이걸 어떻게 써먹어야 하나..
[링크 : http://www.fftw.org/pruned.html]
[링크 : https://www.fftw.org/faq/section3.html#pruned]
[링크 : https://velog.io/@cleansky/메모리-효율적으로-Partial-FFT-계수값-구하는-방법]
fft 복소수(complex) - 실수, 허수부(real, imaginary) (0) | 2023.04.07 |
---|---|
fft 0 Hz (2) | 2023.04.05 |
fftw plan (0) | 2023.03.31 |
libfftw3 precision (0) | 2023.03.30 |
spectrogram (0) | 2023.03.29 |