Main Content

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

sfdr

スプリアス フリー ダイナミック レンジ

説明

r = sfdr(x) は、実数の正弦波信号 x のスプリアス フリー ダイナミック レンジ (SFDR) r (dB) を返します。sfdr は、修正ピリオドグラムと β = 38 のカイザー ウィンドウとを使用してパワー スペクトルを計算します。パワー スペクトルを計算する前に x から平均が減算されます。離散フーリエ変換 (DFT) の計算で使用される点の数は信号 x の長さと同じです。

r = sfdr(x,fs) は、サンプル レート fs の指定時の時間領域の入力信号 x の SFDR を返します。fs の既定値は 1 Hz です。

r = sfdr(x,fs,msd) では、基本 (搬送波) 周波数からサイクル/単位時間で指定される最小スパー距離 msd 分だけ離れたスパーのみを考慮した SFDR が返されます。サンプル レートは fs です。搬送周波数が Fc の場合、区間 (Fc-msd,Fc+msd) にあるすべてのスパーが無視されます。

r = sfdr(sxx,f,'power') では、実数値信号 sxx の片側パワー スペクトルの SFDR が返されます。fsxx のパワー推定に対応する周波数のベクトルです。f の最初の要素は 0 に等しくなければなりません。このアルゴリズムでは、単調に減少するすべてのパワーが DC ビンから削除されます。

r = sfdr(sxx,f,msd,'power') では、基本 (搬送波) 周波数から最小スパー距離 msd 分だけ離れたスパーのみを考慮した SFDR が返されます。搬送周波数が Fc の場合、区間 (Fc-msd,Fc+msd) にあるすべてのスパーが無視されます。sfdr への入力がパワー スペクトルの場合、msd を指定すると高サイドローブ レベルがスパーと識別されるのを防ぐことができます。

[r,spurpow,spurfreq] = sfdr(___) は、最大スパーのパワーと周波数を返します。

出力引数を設定せずに sfdr(___) を使用すると、現在の Figure ウィンドウに信号のスペクトルがプロットされます。スペクトルの基本成分、DC 値およびそれ以外が、さまざまな色で描画されます。SFDR は網掛けされ、プロット上にその値が表示されます。また、基本波と最大スパーにはラベルが付きます。

すべて折りたたむ

100 MHz でサンプリングされた、振幅 1 の 10 MHz トーンの SFDR を求めます。振幅 3.16×10-4 の 1 次高調波 (20 MHz) にスパーがあります。

deltat = 1e-8;
fs = 1/deltat;
t = 0:deltat:1e-5-deltat;
x = cos(2*pi*10e6*t)+3.16e-4*cos(2*pi*20e6*t);
r = sfdr(x,fs)
r = 70.0063

信号のスペクトルを表示します。基本波、DC 値、スパーおよび SFDR に注釈を付けます。

sfdr(x,fs);

Figure contains an axes object. The axes object with title SFDR: 70.01 dB, xlabel Frequency (MHz), ylabel Power (dB) contains 9 objects of type patch, line, text. These objects represent SFDR, Fundamental, Spurs, DC (excluded).

100 MHz でサンプリングされた、振幅 1 の 10 MHz トーンの SFDR を求めます。振幅 3.16×10-4 の 1 次高調波 (20 MHz) にスパーがあり、振幅 10-5 では 25 MHz に別のスパーがあります。11 MHz の最小スパー距離を使用して 1 次高調波をスキップします。

deltat = 1e-8;
fs = 1/deltat;
t = 0:deltat:1e-5-deltat;
x = cos(2*pi*10e6*t)+3.16e-4*cos(2*pi*20e6*t)+ ...
    0.1e-5*cos(2*pi*25e6*t);
r = sfdr(x,fs,11e6)
r = 120.0000

信号のスペクトルを表示します。基本波、DC 値、スパーおよび SFDR に注釈を付けます。

sfdr(x,fs,11e6);

Figure contains an axes object. The axes object with title SFDR: 120.00 dB, xlabel Frequency (MHz), ylabel Power (dB) contains 9 objects of type patch, line, text. These objects represent SFDR, Fundamental, Spurs, DC (excluded).

100 MHz でサンプリングされた、振幅 1 の 10 MHz トーンのパワー スペクトルを求めます。振幅 3.16×10-4 の 1 次高調波 (20 MHz) にスパーがあります。片側パワー スペクトルと Hz 単位の対応する周波数のベクトルを使用して SFDR を計算します。

deltat = 1e-8;
fs = 1/deltat;
t = 0:deltat:1e-6-deltat;
x = cos(2*pi*10e6*t)+3.16e-4*cos(2*pi*20e6*t);
[sxx,f] = periodogram(x,rectwin(length(x)),length(x),fs,'power');
r = sfdr(sxx,f,'power');

信号のスペクトルを表示します。基本波、DC 値、最初のスパーおよび SFDR に注釈を付けます。

sfdr(sxx,f,'power');

Figure contains an axes object. The axes object with title SFDR: 70.01 dB, xlabel Frequency (MHz), ylabel Power (dB) contains 9 objects of type patch, line, text. These objects represent SFDR, Fundamental, Spurs, DC (excluded).

最大スパーの MHz 単位の周波数を判別します。入力信号は 100 MHz でサンプリングされた、振幅 1 の 10 MHz トーンです。振幅 3.16×10-4 の 1 次高調波 (20 MHz) にスパーがあります。

deltat = 1e-8;
t = 0:deltat:1e-6-deltat;
x = cos(2*pi*10e6*t)+3.16e-4*cos(2*pi*20e6*t);
[r,spurpow,spurfreq] = sfdr(x,1/deltat);
spur_MHz = spurfreq/1e6
spur_MHz = 20

加法性ホワイト ガウス ノイズを伴う、周波数 9.8、14.7 および 19.6 kHz をもつ 3 つの正弦波の重ね合わせを作成します。信号は 44.1 kHz でサンプリングされています。9.8 kHz の正弦波の振幅は 1 V、14.7 kHz 波の振幅は 100 μV、19.6 kHz の信号の振幅は 30 μV です。ノイズは平均 0、分散 0.01 μV です。さらに、信号には 0.1 V の DC シフトがあります。

rng default

Fs = 44.1e3;
f1 = 9.8e3;
f2 = 14.7e3;
f3 = 19.6e3;
N = 900;

nT = (0:N-1)/Fs;
x = 0.1+sin(2*pi*f1*nT)+100e-6*sin(2*pi*f2*nT) ...
    +30e-6*sin(2*pi*f3*nT)+sqrt(1e-8)*randn(1,N);

信号のスペクトルおよび SFDR をプロットします。信号の基本波と最大スパーを表示します。DC レベルは、SFDR の計算では考慮されません。

sfdr(x,Fs);

Figure contains an axes object. The axes object with title SFDR: 79.52 dB, xlabel Frequency (kHz), ylabel Power (dB) contains 9 objects of type patch, line, text. These objects represent SFDR, Fundamental, Spurs, DC (excluded).

入力引数

すべて折りたたむ

行ベクトルまたは列ベクトルで指定する実数値正弦波信号。SFDR 計算のパワー スペクトルを求める前に、x から平均が減算されます。

例: x = cos(pi/4*(0:79))+1e-4*cos(pi/2*(0:79));

データ型: double

信号のサンプル レート (サイクル/単位時間)。正のスカラーで指定します。時間の単位が秒の場合、fs は Hz 単位です。

データ型: double

正のスカラーで指定する、SFDR 計算で無視される離散フーリエ変換 (DFT) ビンの最小数。この引数を使用して、基本周波数の近くで発生するスパーまたはサイドローブを無視できます。たとえば、搬送周波数が Fc の場合、範囲 (Fc-msd, Fc+msd) にあるすべてのスパーが無視されます。

データ型: double

行ベクトルまたは列ベクトルとして指定する、SFDR 計算で使用される片側パワー スペクトル。

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

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

データ型: double

行ベクトルまたは列ベクトルで指定する、sxx におけるパワー推定に対応する周波数のベクトル。

出力引数

すべて折りたたむ

実数値のスカラーで指定する、dB 単位のスプリアス フリー ダイナミック レンジ。スプリアス フリー ダイナミック レンジとは、ピーク周波数のパワーと 2 番目に大きい周波数 (スパー) のパワーの差 (dB) です。入力が時系列データの場合、パワー推定はハミング ウィンドウを使用した修正ピリオドグラムから求められます。ピリオドグラムで使用される DFT 長は入力信号 x の長さと同じです。SFDR 測定基準に異なるパワー スペクトルを使用する場合は、'power' フラグを使ってパワー スペクトルを入力できます。

データ型: double

実数値のスカラーで指定する、最大スパーのパワー (dB)。

データ型: double

実数値のスカラーで指定する、最大スパーの Hz 単位の周波数。入力引数としてサンプル レートを指定しない場合、sfdr はサンプル レートを 1 Hz と仮定します。

データ型: double

詳細

すべて折りたたむ

歪み測定関数

関数 thdsfdrsinad および snr は、正弦波による入力刺激を受けた弱非線形システムの応答を測定します。

時間領域の入力が与えられると、sfdr は、サイドローブ減衰量の大きいカイザー ウィンドウを使い、ピリオドグラムを実行します。基本周波数を求めるため、アルゴリズムは、最大の非ゼロスペクトル成分のピリオドグラムを探索します。続いて、最大値から単調に減少するすべての隣接するビンの中心モーメントを計算します。基本波は、検出可能であるためには、少なくとも 2 番目の周波数ビンに属している必要があります。高調波が別の高調波の近傍にある単調減少領域にある場合、そのパワーは大きい方の高調波に属するものと見なされます。この大きい方の高調波は、基本波である場合も、そうでない場合もあります。このアルゴリズムでは、DC ビンから単調に減少するすべてのパワーが無視されます。

基本波が信号の最も高いスペクトル成分でない場合、sfdr は失敗します。

周波数成分がカイザー ウィンドウのサイドローブ幅を許容できるよう、互いを十分離してください。これが不可能な場合は、'power' フラグを使用し、別のウィンドウを使ってピリオドグラムを計算することができます。

拡張機能

バージョン履歴

R2013a で導入