このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
sinad
SINAD 比
構文
説明
[
は信号の全ノイズおよび全高調波歪みのパワー (dB) を返します。r
,totdistpow
] = sinad(___)
出力引数を設定せずに sinad(___)
を使用すると、現在の Figure ウィンドウに信号のスペクトルがプロットされ、基本成分にラベルが付けられます。スペクトルの基本成分、DC 値およびノイズが、さまざまな色で描画されます。プロットの上に SINAD と表示されます。
例
1 つの高調波、または 1 つの高調波とノイズを伴う信号の SINAD
2 つの信号を作成します。どちらの信号も基本周波数は ラジアン/サンプルで振幅が 1、1 次高調波の周波数が ラジアン/サンプルで振幅が 0.025 とします。一方の信号にはさらに、分散が の加法性ホワイト ガウス ノイズを設定します。
これらの 2 つの信号を作成します。再現性のある結果を得るために、乱数発生器を既定の状態に設定します。加法性ノイズがない信号の SINAD を決定し、その結果を理論上の SINAD と比較します。
n = 0:159;
x = cos(pi/4*n)+0.025*sin(pi/2*n);
rng default
y = cos(pi/4*n)+0.025*sin(pi/2*n)+0.05*randn(size(n));
r = sinad(x)
r = 32.0412
powfund = 1; powharm = 0.025^2; thSINAD = 10*log10(powfund/powharm)
thSINAD = 32.0412
加法性ノイズを伴う正弦波信号の SINAD を決定します。加法性ノイズの理論上の分散が組み込まれることで SINAD が近似される様子を示します。
r = sinad(y)
r = 22.8085
varnoise = 0.05^2; thSINAD = 10*log10(powfund/(powharm+varnoise))
thSINAD = 25.0515
サンプル レートを使用した信号の SINAD
基本周波数が 1 kHz、単位振幅が 1 の、480 kHz でサンプリングされた信号を作成します。また、この信号は、振幅が 0.02 の 1 次高調波と、分散が の加法性ホワイト ガウス ノイズで構成されます。
SINAD を決定し、その結果を理論上の SINAD と比較します。
fs = 48e4;
t = 0:1/fs:1-1/fs;
rng default
x = cos(2*pi*1000*t)+0.02*sin(2*pi*2000*t)+0.01*randn(size(t));
r = sinad(x,fs)
r = 32.2058
powfund = 1; powharm = 0.02^2; varnoise = 0.01^2; thSINAD = 10*log10(powfund/(powharm+varnoise*(1/fs)))
thSINAD = 33.9794
ピリオドグラムからの SINAD
基本周波数が 1 kHz、単位振幅が 1 の、480 kHz でサンプリングされた信号を作成します。また、この信号は、振幅が 0.02 の 1 次高調波と、標準偏差が 0.01 の加法性ホワイト ガウス ノイズで構成されます。再現性のある結果を得るために、乱数発生器を既定の状態に設定します。
信号のピリオドグラムを取得し、このピリオドグラムを sinad
の入力として使用します。
fs = 48e4; t = 0:1/fs:1-1/fs; rng default x = cos(2*pi*1000*t)+0.02*sin(2*pi*2000*t)+0.01*randn(size(t)); [pxx,f] = periodogram(x,rectwin(length(x)),length(x),fs); r = sinad(pxx,f,'psd')
r = 32.2109
増幅信号の SINAD
50 kHz でサンプリングされる、周波数 2.5 kHz の正弦波を生成します。標準偏差 0.00005 のホワイト ガウス ノイズを信号に付加します。結果を弱非線形増幅器に通します。SINAD をプロットします。
fs = 5e4; f0 = 2.5e3; N = 1024; t = (0:N-1)/fs; ct = cos(2*pi*f0*t); cd = ct + 0.00005*randn(size(ct)); amp = [1e-5 5e-6 -1e-3 6e-5 1 25e-3]; sgn = polyval(amp,cd); sinad(sgn,fs);
プロットには、比率の計算に使用されるスペクトルと、ノイズとして処理される領域が示されます。DC レベルと基本波は、ノイズの計算では考慮されません。基本波にはラベルが設定されます。
入力引数
x
— 実数値正弦波入力信号
ベクトル
実数値正弦波入力信号。行ベクトルまたは列ベクトルで指定されます。
例: cos(pi/4*(0:159))+cos(pi/2*(0:159))
データ型: single
| double
fs
— サンプル レート
正のスカラー
サンプル レート。正のスカラーで指定します。サンプル レートは単位時間あたりのサンプル数です。時間の単位が秒の場合、サンプル レートの単位は Hz です。
pxx
— 片側 PSD 推定
ベクトル
片側 PSD 推定。非負の実数値列ベクトルで指定されます。
パワー スペクトル密度は、デシベル単位ではなく、線形単位で表さなければなりません。デシベル値をパワー値に変換するには、db2pow
を使用します。
例: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2))
は、2π Hz でサンプリングされたノイズの多い 2 チャネル正弦波のピリオドグラム PSD 推定値とそれについて計算される周波数を指定します。
データ型: single
| double
f
— 巡回周波数
ベクトル
片側 PSD 推定 pxx
に対応する巡回周波数。行ベクトルまたは列ベクトルで指定されます。f
の最初の要素は 0 でなければなりません。
データ型: double
| single
sxx
— パワー スペクトル
非負の実数値行ベクトルまたは列ベクトル
パワー スペクトル。非負の実数値行ベクトルまたは列ベクトルで指定されます。
パワー スペクトルは、デシベル単位ではなく線形単位で表さなければなりません。デシベル値をパワー値に変換するには、db2pow
を使用します。
例: [sxx,w] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2),'power')
では、ホワイト ガウス ノイズに組み込まれる 2 チャネルの正弦波のピリオドグラム パワー スペクトル推定と、計算に使う正規化周波数を指定します。
rbw
— 分解能帯域幅
正のスカラー
分解能帯域幅。正のスカラーで指定されます。この分解能帯域幅は、離散フーリエ変換の周波数分解能と、ウィンドウの等価ノイズ帯域幅の積です。
出力引数
r
— dBc 単位の SINAD 比
実数値のスカラー
信号のノイズおよび歪みに対する比率 (dBc)。実数値スカラーで返されます。
totdistpow
— 信号の全ノイズおよび全高調波歪みのパワー
実数値のスカラー
信号の全ノイズおよび全高調波歪みのパワー。実数値のスカラー (dB) で返されます。
詳細
歪み測定関数
関数 thd
、sfdr
、sinad
および snr
は、正弦波による入力刺激を受けた弱非線形システムの応答を測定します。
時間領域の入力が与えられると、sinad
は、サイドローブ減衰量の大きいカイザー ウィンドウを使い、ピリオドグラムを実行します。基本周波数を求めるため、アルゴリズムは、最大の非ゼロスペクトル成分のピリオドグラムを探索します。続いて、最大値から単調に減少するすべての隣接するビンの中心モーメントを計算します。基本波は、検出可能であるためには、少なくとも 2 番目の周波数ビンに属している必要があります。高い高調波成分は基本周波数の整数倍になります。高調波が別の高調波の近傍にある単調減少領域にある場合、そのパワーは大きい方の高調波に属するものと見なされます。この大きい方の高調波は、基本波である場合も、そうでない場合もあります。
この関数では、ノイズと歪みのみを含む領域のパワーの中央値を使用してノイズを推定します。DC 成分は計算では考慮されません。各点のノイズは、推定されたレベルか、その点の縦座標のうち、小さい方になります。このノイズが、信号および高調波の値から減算されます。
基本波が信号の最も高いスペクトル成分でない場合、sinad
は失敗します。
周波数成分がカイザー ウィンドウのサイドローブ幅を許容できるよう、互いを十分離してください。これが不可能な場合は、"power"
フラグを使用し、別のウィンドウを使ってピリオドグラムを計算することができます。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
指定する場合、入力引数
"power"
および"psd"
はコンパイル時の定数でなければなりません。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は、GPU 配列を完全にサポートします。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2013b で導入R2023a: gpuArray
オブジェクトの使用
関数 sinad
は gpuArray
オブジェクトをサポートしています。この機能を使用するには、Parallel Computing Toolbox™ が必要です。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)