Main Content

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

obw

説明

bw = obw(x) は、入力信号 x の 99% 占有帯域幅 bw を返します。

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

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

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

bw = obw(___,freqlims,p) では、占有帯域幅を計算する周波数範囲を指定します。この構文には、2 番目の入力引数が fs または f である限り、前の構文の入力引数を任意に組み合わせて含めることができます。2 番目の入力が空として渡された場合は、obw は正規化周波数を想定します。この構文では、占有帯域に含まれる信号パワー全体のパーセント比として p も指定します。

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

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

すべて折りたたむ

1024 kHz でサンプリングされたチャープのサンプルを 1024 個生成します。チャープの初期周波数は 50 kHz で、サンプリングの最後には 100 kHz に到達します。S/N 比が 40 dB となるホワイト ガウス ノイズを付加します。再現可能な結果が必要な場合は、乱数発生器をリセットします。

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

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

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

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

obw(x,Fs)

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

ans = 5.5377e+04

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

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

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

y = obw([x x2],Fs)
y = 1×2
105 ×

    0.5538    1.0546

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

obw([x x2],Fs);

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

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

obw(x+x2,Fs);

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

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 をもつカイザー ウィンドウを指定します。信号の占有帯域幅を推定し、PSD のプロット上で推定値に注釈を付けます。

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

obw(Pxx,f);

Figure contains an axes object. The axes object with title 99% Occupied Bandwidth: 7.200 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 を推定し、結果から占有帯域幅を特定します。

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

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

    7.2001    7.3777

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

obw(Pyy,f);

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

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

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

obw(Pzz,f);

Figure contains an axes object. The axes object with title 99% Occupied Bandwidth: 163.494 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]);

0.2π ラジアン/サンプルと 0.6π ラジアン/サンプル間の信号の 99% 占有帯域幅を計算します。PSD をプロットして占有帯域幅と測定間隔に注釈を付けます。

obw(d,[],[0.2 0.6]*pi);

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

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

[bw,flo,fhi,power] = obw(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.217*pi, flo = 0.240*pi, fhi = 0.458*pi 
fprintf('power = %.1f%% of total',power/bandpower(d)*100)
power = 99.0% of total

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

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

0.3π ラジアン/サンプルと 0.9π ラジアン/サンプル間の信号の 50% 占有帯域幅を計算します。PSD をプロットして占有帯域幅と測定間隔に注釈を付けます。

obw(d,[],[0.3 0.9]*pi,50);

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

各チャネルの占有帯域幅を出力します。π で除算します。

bw = obw(d,[],[0.3 0.9]*pi,50)/pi
bw = 1×2

    0.0705    0.1412

入力引数

すべて折りたたむ

ベクトルまたは行列として指定される入力信号。x がベクトルの場合、単一チャネルとして取り扱われます。x が行列の場合、obw は各列に対して占有帯域幅を個別に計算します。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 が行列の場合、obwpxx の各列の占有帯域幅を個別に計算します。

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

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

データ型: single | double

周波数。ベクトルとして指定します。

データ型: single | double

パワー スペクトル推定。実数の非負の要素を含むベクトルまたは行列として指定します。sxx が行列の場合、obwsxx の各列の占有帯域幅を個別に計算します。

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

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

データ型: single | double

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

データ型: single | double

周波数の範囲。実数値の 2 要素ベクトルとして指定します。freqlims を指定しない場合、obw は入力信号の全帯域幅を使用します。

データ型: single | double

パワー比率。0 ~ 100 の間の正のスカラーとして指定します。obw は、積分されたパワーがスペクトル全体のパワーと交差する点、½(100 – p) および ½(100 + p) パーセント点のそれぞれの間の周波数の差を計算します。

データ型: single | double

出力引数

すべて折りたたむ

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

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

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

帯域幅の周波数の範囲。スカラーまたはベクトルとして返されます。

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

アルゴリズム

占有帯域幅を特定するため、obw は箱型ウィンドウを使用してピリオドグラム パワー スペクトル密度の推定を計算し、中点則を使用して推定を積分します。占有帯域幅は、積分されたパワーがスペクトルのパワー全体と交差する点である 0.5% および 99.5% 点の間の周波数の差です。

拡張機能

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

バージョン履歴

R2015a で導入

すべて展開する