ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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 の占有帯域幅を計算します。周波数 fsxx の推定値に対応します。rbw は各パワー推定の積分に使用する分解能帯域幅です。

bw = obw(___,freqrange,p) では、占有帯域幅を計算する周波数範囲を、前の構文の任意の入力引数を使用して指定します。

この構文は、占有帯域に含まれる信号パワー全体のパーセント比 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)

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);

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

obw(x+x2,Fs);

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);

別の正弦波を生成します。この正弦波の周波数は 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);

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

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

obw(Pzz,f);

正規化されたカットオフ周波数が 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);

占有帯域幅、その上限と下限および占有帯域パワーを出力します。サンプルレート 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);

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

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 要素ベクトルとして指定します。freqrange を指定しない場合、obw は入力信号の全帯域幅を使用します。

データ型: single | double

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

データ型: single | double

出力引数

すべて折りたたむ

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

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

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

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

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

アルゴリズム

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

R2015a で導入