Main Content

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

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

가산성 N(0,1) 백색 가우스 잡음(AWGN)이 있는 100Hz의 사인파로 구성된 신호를 생성합니다. 샘플링 주파수는 1kHz입니다. 주파수 구간 50Hz ~ 150Hz에 있는 총 전력의 백분율을 구합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다.

rng('default')

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

pband = bandpower(x,1000,[50 150]);
ptot = bandpower(x,1000,[0 500]);
per_power = 100*(pband/ptot)
per_power = 51.9591

먼저 주기도를 사용하여 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

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

가산성 N(0,1) 백색 가우스 잡음(AWGN)이 있는 100Hz의 사인파로 구성된 신호를 생성합니다. 샘플링 주파수는 1kHz입니다. 주기도를 구하고 이에 대응하는 주파수 벡터를 구합니다. PSD 추정값을 사용하여 주파수 구간 50Hz ~ 150Hz에 있는 총 전력의 백분율을 구합니다.

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

[Pxx,F] = periodogram(x,rectwin(length(x)),length(x),Fs);
pBand = bandpower(Pxx,F,[50 150],'psd');
pTot = bandpower(Pxx,F,'psd');
per_power = 100*(pBand/pTot)
per_power = 49.1798

가산성 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개 가진 실수 값 행 벡터 또는 열 벡터로 지정됩니다. 입력 신호 x에 N개의 샘플이 있으면 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 추정값으로, 음이 아닌 요소를 가진 실수 값 열 벡터 또는 행렬로 지정됩니다.

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

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

데이터형: double | single

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

데이터형: double | single

출력 인수

모두 축소

평균 대역 전력으로, 음이 아닌 스칼라로 반환됩니다.

데이터형: double | single

참고 문헌

[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에 개발됨

모두 확장

참고 항목

|