추천 게시물

FFT와 PSD의 차이

목차



 FFT는 전압과 주파수를 예로 들면, 단위가 Y축이 V, X축이 Hz이다. 반면 PSD는 V^2/Hz로 Y축이 다르다. 만약 V로 바꾸기 위해 root를 취해 rms(root mean squre)로 변경하면 Y축이 Hz^0.5가 된다.

둘의 차이는 FFT는 각 주파수의 신호의 크기를 의미하고 PSD는 1Hz로 환산했을 때 확률 분포를 뜻한다. 엄밀히 말하면 

따라서 엄밀히 PSD를 얻기 위해서는 여러번의 FFT를 한 뒤 각 주파수 성분을 사용해 PSD를 구해야 한다. 그러나 반복 측정 시 신호의 크기가 큰 파이가 없가능 가정하에 1개의 FFT만 사용하는 경우도 있다.

아래는 내가 공부하며 정리한 내용이다. 1개의 FFT를 사용한다면 8로 나누지 않고 1로 나누면 될것이다.


아래는 왜 FFT의 신호를 제곱해서 더하면 psd를 적분한 것과 같은지 정리한 그림이다.


아래 FFT 예제를 통해 더 자세히 분석해 볼 수 있다. Sine과 노이즈의 강도를 변경해 가며 파형을 확인해 보자. 주파수 해상도 (fbin=1)일 때 둘은 PSD와 PS는 유사하지만 fbin=1이 아닐때 서로 달라진다.


% 샘플 데이터 생성

N = 2048;  % FFT 길이

f_s = 4000;  % 샘플링 주파수 (Hz)

fbin = f_s/N;

t = (0:N-1) / f_s;

signal = 100*sin(2 * pi * 500 * t) + 0.5 * randn(size(t));  % 50 Hz 사인파 + 노이즈


% FFT 계산

X = fft(signal);


% 주파수 벡터 계산

f = (0:N-1)*(f_s/N);


% 파워 스펙트럼 계산

FFT_result = abs(X)./N.*2;

P = (FFT_result).^2;



% 파워 스펙트럴 밀도 계산

PSD = P ./ fbin;


% 그래프 그리기

figure;

plot(f(1:N/2), P(1:N/2), 'b', 'LineWidth', 1.5);  % 파워 스펙트럼 파란색으로 플롯

hold on;

plot(f(1:N/2), PSD(1:N/2), 'r', 'LineWidth', 1.5);  % 파워 스펙트럴 밀도 빨간색으로 플롯

hold off;


% 그래프 레이블과 제목 설정

title('Power Spectrum vs. Power Spectral Density');

xlabel('Frequency (Hz)');

ylabel('Power');

legend('Power Spectrum', 'Power Spectral Density');

grid on;


















댓글