ドキュメンテーション

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

medfreq

説明

freq = medfreq(x) は、時間領域信号 x のパワー スペクトルにおける正規化周波数の中央値 freq を推定します。

freq = medfreq(x,fs) は、周波数中央値をサンプルレート fs で推定します。

freq = medfreq(pxx,f) は、パワー スペクトル密度 (PSD) 推定 pxx の周波数中央値を返します。周波数 f は、pxx の推定値に対応します。

freq = medfreq(sxx,f,rbw) は、分解能帯域幅 rbw でのパワー スペクトル推定 sxx の周波数中央値を返します。

freq = medfreq(___,freqrange) では、周波数中央値を計算する周波数範囲を、前の構文の任意の入力引数を使用して指定します。freqrange の既定の値は、入力信号の全帯域幅です。

[freq,power] = medfreq(___) は、スペクトルの帯域パワー power も返します。freqrange を指定した場合、power には freqrange 内の帯域パワーが含まれます。

出力引数なしで medfreq(___) を使用すると、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) をプロットして周波数中央値に注釈を付けます。

medfreq(x,Fs)

ans = 7.4998e+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 = medfreq([x x2],Fs)
y = 1×2
105 ×

    0.7500    2.4999

2 つのチャネルの PSD をプロットして周波数中央値に注釈を付けます。

medfreq([x x2],Fs);

2 つのチャネルを追加して新しい信号を作成します。PSD をプロットして周波数中央値に注釈を付けます。

medfreq(x+x2,Fs)

ans = 2.3756e+05

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

medfreq(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 = medfreq(Pyy,f)
y = 1×2
105 ×

    1.0012    2.5731

PSD のプロット上で 2 つのチャネルの周波数中央値に注釈を付けます。

medfreq(Pyy,f);

2 つのチャネルを追加して新しい信号を作成します。PSD を推定して周波数中央値に注釈を付けます。

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

medfreq(Pzz,f);

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

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

0.3π ラジアン/サンプルと 0.6π ラジアン/サンプル間の信号の周波数中央値を計算します。PSD をプロットして周波数中央値と測定間隔に注釈を付けます。

medfreq(d,[],[0.3 0.6]*pi);

測定間隔の周波数中央値と帯域パワーを出力します。サンプルレート 2π の指定は、レートを設定しない場合と同じです。

[mdf,power] = medfreq(d,2*pi,[0.3 0.6]*pi);

fprintf('Mean = %.3f*pi, power = %.1f%% of total \n', ...
    mdf/pi,power/bandpower(d)*100)
Mean = 0.371*pi, power = 77.4% of total 

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

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

0.3π ラジアン/サンプルと 0.9π ラジアン/サンプル間の信号の周波数中央値を計算します。PSD をプロットして各チャネルの周波数中央値と測定間隔に注釈を付けます。

medfreq(d,[],[0.3 0.9]*pi);

各チャネルの周波数中央値を出力します。π で除算します。

mdf = medfreq(d,[],[0.3 0.9]*pi)/pi
mdf = 1×2

    0.3706    0.6500

入力引数

すべて折りたたむ

ベクトルまたは行列として指定される入力信号。x がベクトルの場合、単一チャネルとして取り扱われます。x が行列の場合、medfreqx の各列の周波数中央値を個別に計算します。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 が行列の場合、medfreqpxx の各列の周波数中央値を個別に計算します。

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

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

データ型: single | double

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

データ型: single | double

パワー スペクトル推定。ベクトルまたは行列として指定します。sxx が行列の場合、medfreqsxx の各列の周波数中央値を個別に計算します。

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

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

データ型: single | double

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

データ型: single | double

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

データ型: single | double

出力引数

すべて折りたたむ

周波数中央値。スカラーまたはベクトルとして指定します。

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

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

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

R2015a で導入