Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

powerbw

説明

bw = powerbw(x) は、入力信号 x の 3 dB (電力半値) 帯域幅 bw を返します。

bw = powerbw(x,fs) は、3 dB 帯域幅をサンプル レート fs で返します。

bw = powerbw(pxx,f) は、パワー スペクトル密度 (PSD) 推定 pxx の 3 dB 帯域幅を返します。周波数 f は、pxx の推定値に対応します。

bw = powerbw(sxx,f,rbw) は、パワー スペクトル推定 sxx の 3 dB 帯域幅を計算します。周波数 f は、sxx の推定値に対応します。この関数は、分解能帯域幅 rbw を使用して、各パワー推定を積分します。

bw = powerbw(___,freqlims,r) では、基準レベルを計算する周波数範囲を指定します。この構文には、2 番目の入力引数が fs または f である限り、前の構文の入力引数を任意に組み合わせて含めることができます。2 番目の入力が空として渡された場合は、powerbw は正規化周波数を想定します。関数はスペクトルが基準レベルを r dB 下回る点どうしの間、または端点に達する点との間の周波数の差を計算します。

[bw,flo,fhi,power] = powerbw(___) は、パワー帯域幅の上限と下限およびこの範囲内のパワーも返します。

出力引数なしで powerbw(___) を使用すると、現在の Figure ウィンドウに PSD またはパワー スペクトルがプロットされ、帯域幅に注釈が付けられます。

すべて折りたたむ

1024 kHz でサンプリングされたチャープのサンプルを 1024 個生成します。チャープの初期周波数は 50 kHz で、サンプリングの最後には 100 kHz に到達します。S/N 比が 40 dB となるホワイト ガウス ノイズを付加します。

nSamp = 1024;
Fs = 1024e3;
SNR = 40;

t = (0:nSamp-1)'/Fs;

x = chirp(t,50e3,nSamp/Fs,100e3);
x = x + randn(size(x))*std(x)/db2mag(SNR);

信号の 3 dB 帯域幅を推定し、パワー スペクトル密度 (PSD) のプロット上で推定値に注釈を付けます。

powerbw(x,Fs)

Figure contains an axes object. The axes object with title 3 dB Bandwidth: 44.386 kHz, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 4 objects of type line, patch.

ans = 4.4386e+04

別のチャープを生成します。初期周波数 200 kHz、最終周波数 300 kHz および最初の信号の振幅の 2 倍の振幅を指定します。ホワイト ガウス ノイズを付加します。

x2 = 2*chirp(t,200e3,nSamp/Fs,300e3);
x2 = x2 + randn(size(x2))*std(x2)/db2mag(SNR);

チャープを連結して 2 チャネル信号を生成します。各チャネルの 3 dB 帯域幅を推定します。

y = powerbw([x x2],Fs)
y = 1×2
104 ×

    4.4386    9.2208

PSD のプロット上で 2 つのチャネルの 3 dB 帯域幅に注釈を付けます。

powerbw([x x2],Fs);

Figure contains an axes object. The axes object with title 3 dB Bandwidth, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 8 objects of type line, patch.

2 つのチャネルを追加して新しい信号を作成します。PSD をプロットして 3 dB 帯域幅に注釈を付けます。

powerbw(x+x2,Fs)

Figure contains an axes object. The axes object with title 3 dB Bandwidth: 92.243 kHz, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 4 objects of type line, patch.

ans = 9.2243e+04

1024 kHz でサンプリングされた 100.123 kHz の正弦波のサンプルを 1024 個生成します。S/N 比が 40 dB となるホワイト ガウス ノイズを付加します。再現可能な結果が必要な場合は、乱数発生器をリセットします。

nSamp = 1024;
Fs = 1024e3;
SNR = 40;
rng default

t = (0:nSamp-1)'/Fs;

x = sin(2*pi*t*100.123e3);
x = x + randn(size(x))*std(x)/db2mag(SNR);

periodogram を使用して、信号のパワー スペクトル密度 (PSD) を計算します。信号と同じ長さおよび形状係数 38 をもつカイザー ウィンドウを指定します。信号の 3 dB 帯域幅を推定し、PSD のプロット上で推定値に注釈を付けます。

[Pxx,f] = periodogram(x,kaiser(nSamp,38),[],Fs);

powerbw(Pxx,f);

Figure contains an axes object. The axes object with title 3 dB Bandwidth: 3.175 kHz, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 4 objects of type line, patch.

別の正弦波を生成します。この正弦波の周波数は 257.321 kHz で、振幅は最初の正弦波の 2 倍です。ホワイト ガウス ノイズを付加します。

x2 = 2*sin(2*pi*t*257.321e3);
x2 = x2 + randn(size(x2))*std(x2)/db2mag(SNR);

正弦波を連結して 2 チャネル信号を生成します。各チャネルの PSD を推定し、結果から 3 dB 帯域幅を特定します。

[Pyy,f] = periodogram([x x2],kaiser(nSamp,38),[],Fs);

y = powerbw(Pyy,f)
y = 1×2
103 ×

    3.1753    3.3015

PSD のプロット上で 2 つのチャネルの 3 dB 帯域幅に注釈を付けます。

powerbw(Pyy,f);

Figure contains an axes object. The axes object with title 3 dB Bandwidth, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 8 objects of type line, patch.

2 つのチャネルを追加して新しい信号を作成します。PSD を推定し、3 dB 帯域幅に注釈を付けます。

[Pzz,f] = periodogram(x+x2,kaiser(nSamp,38),[],Fs);

powerbw(Pzz,f);

Figure contains an axes object. The axes object with title 3 dB Bandwidth: 3.302 kHz, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 4 objects of type line, patch.

正規化されたカットオフ周波数が 0.25π ラジアン/サンプルおよび 0.45π ラジアン/サンプルである 88 次のバンドパス FIR フィルターの周波数応答に類似した PSD をもつ信号を生成します。

d = fir1(88,[0.25 0.45]);

信号の 3 dB 占有帯域幅を計算します。0.2π ラジアン/サンプルと 0.6π ラジアン/サンプル間の帯域の平均パワーを基準レベルとして指定します。PSD をプロットして帯域幅に注釈を付けます。

powerbw(d,[],[0.2 0.6]*pi,3);

Figure contains an axes object. The axes object with title 3 dB Bandwidth: blank 200.421 blank times blank pi blank mrad/sample, xlabel Normalized Frequency ( times pi blank mrad/sample), ylabel Power/frequency (dB/(rad/sample)) contains 4 objects of type line, patch.

帯域幅、帯域幅の上限と下限および帯域パワーを出力します。サンプル レート 2π の指定は、レートを設定しない場合と同じです。

[bw,flo,fhi,power] = powerbw(d,2*pi,[0.2 0.6]*pi);

fprintf('bw = %.3f*pi, flo = %.3f*pi, fhi = %.3f*pi \n', ...
    [bw flo fhi]/pi)
bw = 0.200*pi, flo = 0.250*pi, fhi = 0.450*pi 
fprintf('power = %.1f%% of total',power/bandpower(d)*100)
power = 96.9% of total

正規化されたカットオフ周波数が 0.5π ラジアン/サンプルと 0.8π ラジアン/サンプルであり、最初のチャネルの 1/10 の振幅をもつ 2 番目のチャネルを追加します。

d = [d;fir1(88,[0.5 0.8])/10]';

2 チャネル信号の 6 dB 帯域幅を計算します。スペクトルの最大パワー レベルを基準レベルとして指定します。

powerbw(d,[],[],6);

Figure contains an axes object. The axes object with title 6 dB Bandwidth, xlabel Normalized Frequency ( times pi blank mrad/sample), ylabel Power/frequency (dB/(rad/sample)) contains 8 objects of type line, patch.

各チャネルの 6 dB 帯域幅およびその上限と下限を出力します。

[bw,flo,fhi] = powerbw(d,[],[],6);
bds = [bw;flo;fhi];

fprintf('One: bw = %.3f*pi, flo = %.3f*pi, fhi = %.3f*pi \n',bds(:,1)/pi)
One: bw = 0.198*pi, flo = 0.252*pi, fhi = 0.450*pi 
fprintf('Two: bw = %.3f*pi, flo = %.3f*pi, fhi = %.3f*pi \n',bds(:,2)/pi)
Two: bw = 0.294*pi, flo = 0.503*pi, fhi = 0.797*pi 

入力引数

すべて折りたたむ

ベクトルまたは行列として指定される入力信号。x がベクトルの場合、単一チャネルとして取り扱われます。x が行列の場合、powerbw は各列に対してパワー帯域幅を個別に計算します。x は有限の値でなければなりません。

例: cos(pi/4*(0:159))+randn(1,160) は単一チャネルの行ベクトル信号です。

例: cos(pi./[4;2]*(0:159))'+randn(160,2) は 2 チャネル信号です。

データ型: single | double

サンプル レート。正の実数スカラーとして指定します。サンプル レートは単位時間あたりのサンプル数です。時間を秒単位で測定している場合、サンプル レートは Hz 単位になります。

データ型: single | double

パワー スペクトル密度 (PSD) 推定。ベクトルまたは行列として指定します。pxx が片側推定である場合は、実信号に対応していなければなりません。pxx が行列の場合、powerbwpxx の各列の帯域幅を個別に計算します。

パワー スペクトル密度は、デシベル単位ではなく、線形単位で表さなければなりません。デシベル値をパワー値に変換するには、db2pow を使用します。

例: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2)) は、2π Hz でサンプリングされたノイズの多い 2 チャネル正弦波のピリオドグラム PSD 推定値とそれについて計算される周波数を指定します。

データ型: single | double

周波数。ベクトルとして指定します。f の最初の要素が 0 の場合、powerbw は、スペクトルが実信号の片側スペクトルであると仮定します。つまり、関数が 3 dB ポイントをシークするため、ゼロ周波数ビンのパワー値は 2 倍になります。

データ型: single | double

パワー スペクトル推定。ベクトルまたは行列として指定します。sxx が行列の場合、powerbwsxx の各列の帯域幅を個別に計算します。

パワー スペクトルは、デシベル単位ではなく線形単位で表さなければなりません。デシベル値をパワー値に変換するには、db2pow を使用します。

例: [sxx,w] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2),"power") では、ホワイト ガウス ノイズに組み込まれる 2 チャネルの正弦波のピリオドグラム パワー スペクトル推定と、計算に使う正規化周波数を指定します。

データ型: single | double

分解能帯域幅。正のスカラーで指定されます。この分解能帯域幅は、2 つの値、離散フーリエ変換の周波数分解能と PSD の計算に使用されるウィンドウの等価ノイズ帯域幅の積です。

データ型: single | double

周波数の範囲。実数値の 2 要素ベクトルとして指定します。freqlims を指定した場合、基準レベルは基準帯域の平均パワー レベルになります。freqlims を指定しない場合、基準レベルはスペクトルの最大パワー レベルになります。freqlims はターゲット帯域内になければなりません。

データ型: single | double

パワー レベルの低下。dB 単位表記の正の実数スカラーとして指定します。

データ型: single | double

出力引数

すべて折りたたむ

パワー帯域幅。スカラーまたはベクトルとして返されます。

  • サンプル レートを指定した場合、bw の単位は fs の単位と同じになります。

  • サンプル レートを指定しない場合、bw の単位はラジアン/サンプルになります。

帯域幅の周波数の範囲。スカラーとして返されます。

帯域幅に蓄積されたパワー。スカラーまたはベクトルとして返されます。

アルゴリズム

3 dB 帯域幅を特定するため、powerbw は箱型ウィンドウを使用してピリオドグラム パワー スペクトル推定を計算し、最大推定値を基準レベルとします。帯域幅は、スペクトルが基準レベルより少なくとも 3 dB 低下した点の間の周波数の差です。信号が 3 dB 低下する前に信号の端点のいずれかに到達する場合、powerbw は端点を使用して差を計算します。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2015a で導入

すべて展開する