신호의 스펙트럼 분석을 수행 할 때 푸리에 변환 (FFT)의 단위
내 질문은 신호의 스펙트럼 분석을 수행하거나 신호를 FFT에 던져 적절한 수치 패키지를 사용하여 나오는 결과를 해석 한 결과의 물리적 의미와 관련이 있습니다.
구체적으로 특별히:
- 신호를 받아, 시간에 따라 변화하는 전압 v (t)
- FFT에 던져 넣으십시오 (복소수 시퀀스를 다시 얻습니다)
- 이제 계수 (abs)를 취하고 결과를 제곱합니다. 즉 | fft (v) | ^ 2.
이제 y 축에 실수가 있습니다.이 스펙트럼 계수를 부를까요?
- 샘플링 해상도를 사용하여 요리 책 레시피를 따르고 스펙트럼 계수를 주파수에 연결합니다.
- 이 시점에서 x 축에 주파수가있는 주파수 스펙트럼 g (w)가 있지만 y 축에 어떤 물리적 단위가 있습니까?
내 이해는이 주파수 스펙트럼은 전압 신호에 존재하는 다양한 주파수의 양을 보여줍니다. 원래 신호를 재구성하는 데 필요한 다양한 주파수의 사인과 코사인의 계수라는 의미에서 스펙트럼 계수입니다.
첫 번째 질문은 이러한 스펙트럼 계수의 단위는 무엇입니까?
이것이 중요한 이유는 스펙트럼 계수가 작고 거대 할 수 있으므로 dB 스케일을 사용하여 표현하고 싶습니다.
하지만 그렇게하려면 선택을해야합니다.
- 전압과 같은 현장 측정에 해당하는 20log10dB 변환을 사용합니다.
- 또는 전력과 같은 에너지 측정에 해당하는 10log10dB 변환을 사용합니다.
내가 사용하는 스케일링은 단위가 무엇인지에 따라 다릅니다.
이것에 대한 빛을 비추면 대단히 감사하겠습니다!
신호를 받아, 시간에 따라 변화하는 전압 v (t)
단위는 V 이고 값은 실수입니다.
그것을 FFT에 던지십시오-좋습니다, 당신은 일련의 복소수를 얻습니다
단위는 여전히 V , 값은 복잡합니다 ( V / Hz가 아님 -FFT DC 신호는 DC 레벨의 포인트가되고 무한대까지 축소되는 dirac 델타 함수가 아닙니다)
이제 계수 (abs)를
단위는 여전히 V 이고 값은 신호 성분의 실제 크기입니다.
결과를 제곱합니다. 즉 | fft (v) | ^ 2
단위는 이제 V 2 , 값은 신호 성분 크기의 실수 제곱입니다.
이 스펙트럼 계수를 부를까요?
일반적인 스펙트럼 계수 사용보다는 전력 밀도에 더 가깝습니다. 싱크가 완벽한 저항이라면 전력이 될 것이지만 싱크가 주파수에 의존적이라면 "입력 전압의 FFT 크기의 제곱"입니다.
이 시점에서 여러분은 주파수 스펙트럼 g (w) : x 축의 주파수, 그리고 ... y 축의 물리적 단위는 무엇입니까?
단위는 V 2
단위가 중요한 또 다른 이유는 스펙트럼 계수가 작고 거대 할 수 있으므로 dB 스케일을 사용하여 표시하고 싶습니다. 하지만 그렇게하려면 선택을해야합니다. 20log10dB 변환 (전압과 같은 필드 측정에 해당)을 사용해야합니까? 아니면 10log10dB 변환을 사용합니까 (전력과 같은 에너지 측정에 해당)?
이미 전압 값을 제곱하여 완벽한 1 Ohm 저항에 등가 전력을 제공 했으므로 10log10을 사용하십시오.
log (x 2 ) 는 2 log (x) 이므로 20log10 | fft (v) | = 10log10 (| fft (v) | 2 ) , 따라서 값을 제곱하지 않은 경우 20log10을 사용할 수 있습니다.
y 축은 복잡합니다 (실수와 반대). 크기는 원래 샘플의 단위에 관계없이 원래 신호의 진폭입니다. 각도는 해당 주파수 구성 요소의 위상입니다.
지금까지 제가 생각 해낼 수 있었던 것은 다음과 같습니다.
y 축은 [에너지 / Hz] 단위 인 것 같습니다!?
내가 이것을 도출하는 방법은 다음과 같습니다 (피드백 환영!) :
신호 v (t)는 볼트 단위입니다.
따라서 푸리에 적분 : 적분 e ^ iwt v (t) dt를 취하면 [volts * seconds] 또는 [volts / Hz] 단위가 있어야합니다 (e ^ iwt는 단위 없음).
제곱 크기를 취하면 [volts ^ 2 * s ^ 2] 또는 [v ^ 2 * s / Hz] 단위를 제공해야합니다.
우리는 전력이 볼트 ^ 2에 비례한다는 것을 알고 있습니다. 그래서 이것은 우리를 [전력 * s / Hz]로 얻습니다.
그러나 전력은 에너지 변화의 시간 비율입니다. 즉, 전력 = 에너지 / 초이므로 에너지 = 전력 * s라고도 쓸 수 있습니다.
이것은 우리에게 후보 결론 [에너지 / Hz]을 남깁니다. (줄 / Hz?!)
... 이것은 "Hz 당 에너지 함량"이라는 의미를 제시하고 주파수 대역을 통합하고 에너지 함량을 보는 용도로 제안합니다. 사실이라면 매우 좋을 것입니다.
Continuing... assuming the above is correct, then we are dealing with an Energy measurement, so this would suggest using 10log10 conversion to get into dB scale, instead of 20log10...
...
The power into a resistor is v^2/R
watts. The power of a signal x(t)
is an abstraction of the power into a 1 Ohm
resistor. Therefore, the power of a signal x(t)
is x^2
(also called instantaneous power), regardless of the physical units of x(t)
.
For example, if x(t)
is temperature, and the units of x(t)
are degrees C
, then the units for the power x^2
of x(t)
are C^2
, certainly not watts.
If you take the Fourier transform of x(t)
to get X(jw)
, then the units of X(jw)
are C*sec
or C/Hz
(according to the Fourier transform integral). If you use (abs(X(jw)))^2
, then the units are C^2*sec^2=C^2*sec/Hz
. Since power units are C^2
, and energy units are C^2*sec
, then abs(X(jw)))^2
gives the energy spectral density, say E/Hz
. This is consistent with Parseval's theorem, where the energy of x(t)
is given by (1/2*pi)
times the integral of abs(X(jw)))^2
with respect to w
, i.e., (1/2*pi)*int(abs(X(jw)))^2*dw) > (1/2*pi)*(C^2*sec^2)*2*pi*Hz > (1/2*pi)*(C^2*sec/Hz)*2*pi*Hz > E
.
Conversion to a dB (log scale) scale does not change the units.
If you take the FFT of samples of x(t)
, written as x(n)
, to get X(k)
, then the result X(k)
is an estimate of the Fourier series coefficients of a periodic function, where one period over T0
seconds is the segment of x(t)
that was sampled. If the units of x(t)
are degrees C
, then the units of X(k)
are also degrees C
. The units of abs(X(k))^2
are C^2
, which are the units of power. Thus, a plot of abs(X(k))^2
versus frequency shows the power spectrum (not power spectral density) of x(n)
, which is an estimate the power of a set of frequency components of x(t)
at the frequencies k/T0 Hz
.
Well, late answer I know. But I just had cause to do something like this, in a different context. My raw data was latency values for transactions against a storage unit - I resampled it to a 1ms time interval. So original data y was "latency, in microseconds." I had 2^18 = 262144 original data points, on 1ms time steps.
After I did the FFT, I got a 0th component (DC) such that the following held:
FFT[0] = 262144*(average of all input data).
So it looks to me like FFT[0] is N*(average of input data). That sort of makes sense - every single data point possesses that DC average as part of what it is, so you add 'em all up.
If you look at the definition of the FFT that makes sense too. All of the other components would involve sine and cosine terms too, but really the FFT is just a summation. The average is just the only one that happens to be present in all points equally, because you have cos(0) = 1.
'IT Share you' 카테고리의 다른 글
PHP Curl 라이브러리를 사용하는 영구 / 유지 HTTP? (0) | 2020.12.08 |
---|---|
Android에서 외부 글꼴 사용 (0) | 2020.12.08 |
어떤 프로토콜? (0) | 2020.12.08 |
변경 가능한 해시 맵 키는 위험한 행위입니까? (0) | 2020.12.07 |
PowerMock으로 void를 반환하는 정적 메서드를 어떻게 모의합니까? (0) | 2020.12.07 |