Main Content

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

toi

3 次インターセプト ポイント

説明

oip3 = toi(x) は、実数の正弦波 2 トーン入力信号 x の出力 TOI (3 次インターセプト ポイント) を dB (デシベル) 単位で返します。この計算は、β = 38 のカイザー ウィンドウを使用して、入力と同じ長さのピリオドグラムで実行されます。

oip3 = toi(x,fs) では、サンプル レート fs を指定します。fs の既定値は 1 です。

oip3 = toi(pxx,f,'psd') では、入力を実数信号の片側 PSD (パワー スペクトル密度) 推定 pxx として指定します。fpxx の推定のベクトルに対応する周波数のベクトルです。

oip3 = toi(sxx,f,rbw,'power') では、入力を実数信号の片側パワー スペクトル sxx として指定します。rbw はそれについて各パワー推定が積分される分解能帯域幅です。

[oip3,fundpow,fundfreq,imodpow,imodfreq] = toi(___) は、2 つの基本正弦波のパワー fundpow と周波数 fundfreq も返します。また、上側および下側の相互変調積のパワー imodpow と周波数 imodfreq も返します。この構文では、上記構文の任意の入力引数を使用できます。

出力引数を設定せずに toi(___) を使用すると、信号のスペクトルがプロットされ、低域および高域の基本波 (f1, f2) および相互変調積 (2f1 – f2, 2f2 – f1) に注釈が付けられます。高い高調波および相互変調積はラベル付けされません。プロットの上に TOI と表示されます。

すべて折りたたむ

周波数が f1=5 kHz および f2=6 kHz で、48 kHz でサンプリングされる 2 トーン正弦波を作成します。信号を多項式に入力することにより、信号を非線形にします。ノイズを追加します。再現性のある結果を得るために、乱数発生器を既定の状態に設定します。3 次インターセプト ポイントを計算します。相互変調積が 2f2-f1=4 kHz および 2f1-f2=7 kHz で発生していることを確認します。

rng default
fi1 = 5e3;
fi2 = 6e3;
Fs = 48e3;
N = 1000;
x = sin(2*pi*fi1/Fs*(1:N))+sin(2*pi*fi2/Fs*(1:N));
y = polyval([0.5e-3 1e-7 0.1 3e-3],x)+1e-5*randn(1,N);

[myTOI,Pfund,Ffund,Pim3,Fim3] = toi(y,Fs);
myTOI,Fim3
myTOI = 1.3844
Fim3 = 1×2
103 ×

    4.0002    6.9998

周波数が 5 kHz および 6 kHz で、48 kHz でサンプリングされる 2 トーン正弦波を作成します。多項式を評価することによって、信号を非線形にします。ノイズを追加します。再現性のある結果を得るために、乱数発生器を既定の状態に設定します。

rng default
fi1 = 5e3;
fi2 = 6e3;
Fs = 48e3;
N = 1000;
x = sin(2*pi*fi1/Fs*(1:N))+sin(2*pi*fi2/Fs*(1:N));
y = polyval([0.5e-3 1e-7 0.1 3e-3],x)+1e-5*randn(1,N);

カイザー ウィンドウを使用して信号のピリオドグラムを評価します。パワー スペクトル密度を使用して TOI を計算します。結果をプロットします。

w = kaiser(numel(y),38);

[Sxx, F] = periodogram(y,w,N,Fs,'psd');
[myTOI,Pfund,Ffund,Pim3,Fim3] = toi(Sxx,F,'psd')
myTOI = 1.3843
Pfund = 1×2

  -22.9133  -22.9132

Ffund = 1×2
103 ×

    5.0000    6.0000

Pim3 = 1×2

  -71.4868  -71.5299

Fim3 = 1×2
103 ×

    4.0002    6.9998

toi(Sxx,F,'psd');

Figure contains an axes object. The axes object with title Third-Order Intercept: 1.38 dB, xlabel Frequency (kHz), ylabel Power/frequency (dB/Hz) contains 5 objects of type line, text.

周波数が 5 kHz および 6 kHz で、48 kHz でサンプリングされる 2 トーン正弦波を作成します。多項式を評価することによって、信号を非線形にします。ノイズを追加します。再現性のある結果を得るために、乱数発生器を既定の状態に設定します。

rng default

fi1 = 5e3;
fi2 = 6e3;
Fs = 48e3;
N = 1000;

x = sin(2*pi*fi1/Fs*(1:N))+sin(2*pi*fi2/Fs*(1:N));
y = polyval([0.5e-3 1e-7 0.1 3e-3],x)+1e-5*randn(1,N);

カイザー ウィンドウを使用して信号のピリオドグラムを評価します。パワー スペクトルを使用して TOI を計算します。結果をプロットします。

w = kaiser(numel(y),38);

[Sxx,F] = periodogram(y,w,N,Fs,'power');

toi(Sxx,F,enbw(w,Fs),'power')

Figure contains an axes object. The axes object with title Third-Order Intercept: 1.38 dB, xlabel Frequency (kHz), ylabel Power (dB) contains 5 objects of type line, text.

ans = 1.3844

周波数が 5 Hz および 7 Hz で、32 Hz でサンプリングされる 2 トーン正弦波のサンプルを 640 個生成します。多項式を評価することによって、信号を非線形にします。標準偏差 0.01 のノイズを付加します。再現性のある結果を得るために、乱数発生器を既定の状態に設定します。3 次インターセプト ポイントを計算します。相互変調積が 2f2-f1=9Hz および 2f1-f2=3Hz で発生していることを確認します。

rng default
x = sin(2*pi*5/32*(1:640))+cos(2*pi*7/32*(1:640));
q = x + 0.01*x.^3 + 1e-2*randn(size(x));
[myTOI,Pfund,Ffund,Pim3,Fim3] = toi(q,32)
myTOI = 17.4230
Pfund = 1×2

   -2.8350   -2.8201

Ffund = 1×2

    5.0000    7.0001

Pim3 = 1×2

  -43.1362  -43.5211

Fim3 = 1×2

    3.0015    8.9744

周波数が 5 Hz および 7 Hz で、32 Hz でサンプリングされる 2 トーン正弦波のサンプルを 640 個生成します。多項式を評価することによって、信号を非線形にします。標準偏差 0.01 のノイズを付加します。乱数発生器を既定の状態に設定します。信号のスペクトルをプロットします。基本波および相互変調積を表示します。後者が 9 Hz および 3 Hz で発生していることを確認します。

rng default
x = sin(2*pi*5/32*(1:640))+cos(2*pi*7/32*(1:640));
q = x + 0.01*x.^3 + 1e-2*randn(size(x));
toi(q,32)

Figure contains an axes object. The axes object with title Third-Order Intercept: 17.42 dB, xlabel Frequency (Hz), ylabel Power (dB) contains 5 objects of type line, text.

ans = 17.4230

入力引数

すべて折りたたむ

行ベクトルまたは列ベクトルとして指定される実数値正弦波 2 トーン信号。

例: polyval([0.01 0 1 0],sum(sin(2*pi*[5 7]'*(1:640)/32))) + 0.01*randn([1 640])

データ型: double | single

サンプル レート。正の実数スカラーとして指定します。サンプル レートは単位時間あたりのサンプル数です。時間の単位が秒の場合、サンプル レートの単位は Hz です。

データ型: double | single

非負の実数値行ベクトルまたは列ベクトルとして指定される片側パワー スペクトル密度推定。

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

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

データ型: double | single

片側 PSD 推定 pxx に対応する巡回周波数。行ベクトルまたは列ベクトルで指定されます。f の最初の要素は 0 でなければなりません。

データ型: double | single

パワー スペクトル。非負の実数値行ベクトルまたは列ベクトルで指定されます。

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

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

データ型: double | single

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

データ型: double | single

出力引数

すべて折りたたむ

dB 単位表記の実数値スカラーとして返される、正弦波 2 トーン信号の出力 3 次インターセプト ポイント。2 番目の主要トーンが最初の主要トーンの 2 次高調波である場合、下側の相互変調積の周波数はゼロとなります。このような場合、この関数は NaN を返します。

データ型: double | single

入力信号の 2 つの基本正弦波に含まれるパワー。2 要素の実数値行ベクトルで返されます。

データ型: double | single

入力信号の 2 つの基本正弦波の周波数。2 要素の実数値行ベクトルで返されます。

データ型: double | single

入力信号の上側および下側の相互変調積に含まれるパワー。2 要素の実数値行ベクトルで返されます。

データ型: double | single

入力信号の上側および下側の相互変調積の周波数。2 要素の実数値行ベクトルで返されます。

データ型: double | single

参照

[1] Kundert, Kenneth S. "Accurate and Rapid Measurement of IP2 and IP3." Designer's Guide Community. May, 2002. https://designers-guide.org/analysis/intercept-point.pdf.

拡張機能

バージョン履歴

R2013b で導入

参考

| | |