주요 콘텐츠

bandpower

설명

p = bandpower(x)는 입력 신호 x의 평균 전력을 반환합니다. x가 행렬이면 bandpower 함수는 각 열의 평균 전력을 개별적으로 계산합니다.

예제

p = bandpower(x,Fs,freqRange)는 주파수 범위 freqRange의 평균 전력을 반환합니다. 지정된 주파수 범위의 전력을 반환하려면 샘플 레이트 Fs를 입력해야 합니다. bandpower 함수는 수정된 주기도를 사용하여 freqRange의 평균 전력을 구합니다.

예제

p = bandpower(pxx,f,"psd")는 파워 스펙트럼 밀도(PSD) 추정값 pxx를 적분하여 계산된 평균 전력을 반환합니다. 이때 적분의 근삿값은 사각형법을 통해 계산됩니다. 입력값 fpxx의 PSD 추정값에 대응하는 주파수로 구성된 벡터입니다. "psd" 옵션은 입력값이 PSD 추정값이며 시계열 데이터가 아님을 나타냅니다.

예제

p = bandpower(pxx,f,freqRange,"psd")는 주파수 구간 freqRange 내 전력의 평균을 반환합니다. freqRange의 주파수가 f의 값과 일치하지 않을 경우 이에 가장 가까운 값을 사용하게 됩니다. 평균 전력은 파워 스펙트럼 밀도(PSD) 추정값 pxx를 적분하여 계산됩니다. 이때 적분의 근삿값은 사각형법을 통해 계산됩니다. "psd" 옵션은 입력값이 PSD 추정값이며 시계열 데이터가 아님을 나타냅니다.

예제

예제

모두 축소

가산성 N(0,1) 백색 가우스 잡음(AWGN)이 있는 100Hz의 사인파로 구성된 신호를 생성합니다. 샘플 레이트는 1kHz입니다. 평균 전력을 구하고 그 결과를 2 노름과 비교합니다.

t = 0:0.001:1-0.001;
x = cos(2*pi*100*t) + randn(size(t));

p = bandpower(x)
p = 
1.5264
l2norm = norm(x,2)^2/numel(x)
l2norm = 
1.5264

지정된 주파수 구간에서 총 전력의 백분율을 구합니다.

100Hz 사인파와 220Hz~270Hz 범위의 주파수 성분을 갖는 처프 신호로 구성된 신호를 생성하고, 이에 N(0,1)의 가산성 백색 가우스 잡음(AWGN)을 추가합니다. 샘플 레이트는 1kHz입니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다.

rng("default")

t = 0:0.001:1-0.001;
x = cos(2*pi*100*t) + t.*chirp(t,220,t(end),270) + 0.2*randn(size(t));

50Hz~150Hz 및 200Hz~300Hz 주파수 구간에서 총 전력의 백분율을 구합니다.

powBands = bandpower(x,1000,[50 150;200 300]);
powTotal = bandpower(x,1000,[0 500]);
powPercent = 100*(powBands/powTotal)
powPercent = 2×1

   76.0390
   20.6880

먼저 주기도를 사용하여 PSD 추정값을 계산하여 평균 전력을 구합니다. PSD 추정값을 bandpower에 입력합니다.

가산성 N(0,1) 백색 가우스 잡음(AWGN)이 있는 100Hz의 사인파로 구성된 신호를 생성합니다. 샘플 레이트는 1kHz입니다. 주기도를 구하고 'psd' 플래그를 사용하여 PSD 추정값으로 평균 전력을 계산합니다. 그 결과를 시간 영역에서 계산한 평균 전력과 비교합니다.

t = 0:0.001:1-0.001;
Fs = 1000;
x = cos(2*pi*100*t) + randn(size(t));

[Pxx,F] = periodogram(x,rectwin(length(x)),length(x),Fs);
p = bandpower(Pxx,F,"psd")
p = 
1.5264
avpow = norm(x,2)^2/numel(x)
avpow = 
1.5264

주기도를 입력값으로 사용하여, 지정된 주파수 구간에서 총 전력의 백분율을 구합니다.

100Hz 사인파와 220Hz~270Hz 범위의 주파수 성분을 갖는 처프 신호로 구성된 신호를 생성하고, 이에 N(0,1)의 가산성 백색 가우스 잡음(AWGN)을 추가합니다. 샘플 레이트는 1kHz입니다. 주기도를 구하고 이에 대응하는 주파수 벡터를 구합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다. 신호의 주기도를 플로팅합니다.

rng("default")

Fs = 1000;
t = 0:1/Fs:1-0.001;
x = cos(2*pi*100*t) + t.*chirp(t,220,t(end),270) + 0.2*randn(size(t));

[Pxx,F] = periodogram(x,hamming(length(x)),length(x),Fs);
periodogram(x,hamming(length(x)),length(x),Fs)

Figure contains an axes object. The axes object with title Periodogram Power Spectral Density Estimate, xlabel Frequency (Hz), ylabel Power/Frequency (dB/Hz) contains an object of type line.

PSD 추정값을 사용하여 50Hz~150Hz 및 200Hz~300Hz 주파수 구간에서 총 전력의 백분율을 구합니다.

powBands = bandpower(Pxx,F,[50 150;200 300],"psd");
powTotal = bandpower(Pxx,F,[0 500],"psd");
powPercent = 100*(powBands/powTotal)
powPercent = 2×1

   76.0390
   20.6880

가산성 N(0,1) 백색 가우스 잡음(AWGN)이 있는 3개의 정현파로 구성된 다중채널 신호를 생성합니다. 정현파 주파수는 100Hz, 200Hz, 300Hz입니다. 샘플 레이트는 1kHz이고 신호의 지속 시간은 1s입니다.

Fs = 1000;
t = 0:1/Fs:1-1/Fs;
f = [100;200;300];

x = cos(2*pi*f*t)' + randn(length(t),3);

신호의 평균 전력을 구하고 그 결과를 2 노름과 비교합니다.

p = bandpower(x)
p = 1×3

    1.5264    1.5382    1.4717

l2norm = dot(x,x)/length(x)
l2norm = 1×3

    1.5264    1.5382    1.4717

입력 인수

모두 축소

입력 시계열 데이터로, 행 벡터나 열 벡터 또는 행렬로 지정됩니다. x가 행렬이면, 이 행렬의 각 열은 독립적인 채널로 처리됩니다.

예: cos(pi/4*(0:159))'+randn(160,1)은 단일채널 열-벡터 신호입니다.

예: cos(pi./[4;2]*(0:159))'+randn(160,2)는 잡음이 있는 2채널 정현파입니다.

데이터형: double | single
복소수 지원 여부:

입력 시계열 데이터의 샘플 레이트로, 양의 스칼라로 지정됩니다.

데이터형: double | single

대역 전력을 계산할 주파수 범위로, 요소를 2개 가진 실수 값 벡터 또는 M×2 실수 값 행렬로 지정됩니다. M은 대역 전력을 계산할 구간 개수입니다.

입력 신호 xN개의 샘플이 있으면 freqRange 벡터 또는 freqRange 행렬의 각 행은 다음 구간 내에 있어야 합니다.

  • x가 실수 값이고 N이 짝수인 경우 [0, Fs/2]

  • x가 실수 값이고 N이 홀수인 경우 [0, (N – 1)Fs/(2N)]

  • x가 복소수 값이고 N이 짝수인 경우 [–(N – 2)Fs/(2N), Fs/2]

  • x가 복소수 값이고 N이 홀수인 경우 [–(N – 1)Fs/(2N), (N – 1)Fs/(2N)]

데이터형: double | single

단측 또는 양측 PSD 추정값으로, 음이 아닌 요소를 가진 실수 값 열 벡터 또는 행렬로 지정됩니다.

  • 이 함수는 pxx의 각 행을 f의 요소에 연결하고 pxx의 각 열을 PSD 추정값으로 처리합니다.

  • 파워 스펙트럼 밀도는 데시벨이 아닌 선형 단위로 표현해야 합니다. db2pow를 사용하여 데시벨 값을 전력 값으로 변환합니다.

예: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2))는 2π Hz로 샘플링되고 잡음이 있는 2채널 정현파의 주기도 PSD 추정값과 이 추정값이 계산된 주파수를 지정합니다.

데이터형: double | single

PSD 추정값의 주파수로, 실수 값 요소를 가진 벡터로 지정됩니다. 벡터 f에는 pxx의 PSD 추정값에 대응하는 주파수가 있습니다.

데이터형: double | single

출력 인수

모두 축소

평균 대역 전력으로, freqRange의 행 개수와 같은 개수의 요소를 갖는 음이 아닌 벡터로 반환됩니다.

데이터형: double | single

알고리즘

대역 전력을 구하기 위해 bandpower 함수는 해밍 윈도우를 사용하여 주기도 파워 스펙트럼 추정값을 계산합니다.

다음 세 가지 방법으로 샘플 레이트 Fs에서 신호 x의 주파수 구간 [fMin fMax]에 대한 대역 전력 bPow 값을 동일하게 구할 수 있습니다.

신호에서 직접
bPow = bandpower(x,Fs,[fMin fMax])
신호의 주기도에서
[P,F] = periodogram(x,hamming(length(x)),length(x),Fs);
bPow = bandpower(P,F,[fMin fMax],"psd")
신호의 파워 스펙트럼 추정값(Welch PSD)에서
[P,F] = pwelch(x,hamming(length(x)),[],length(x),Fs);
bPow = bandpower(P,F,[fMin fMax],"psd")

참고

bandpower 함수는 시간 영역의 입력 신호를 주파수 영역으로 변환할 때 중간 표현을 사용하므로, 반환되는 대역 전력은 신호 변환 방법, DFT 점 개수 및 윈도우 크기에 따라 달라질 수 있습니다.

참고 문헌

[1] Hayes, Monson H. Statistical Digital Signal Processing and Modeling. New York: John Wiley & Sons, 1996.

[2] Stoica, Petre, and Randolph Moses. Spectral Analysis of Signals. Upper Saddle River, NJ: Prentice Hall, 2005.

확장 기능

모두 확장

버전 내역

R2013a에 개발됨

모두 확장

참고 항목

| | |