Main Content

dpss

離散扁長回転楕円体 (スレピアン) 列

説明

dps_seq = dpss(seq_length,time_halfbandwidth) では、長さが seq_length の、最初の round(2*time_halfbandwidth) 個の離散扁長回転楕円体列 (DPSS)、すなわちスレピアン列が返されます。

[dps_seq,lambda] = dpss(seq_length,time_halfbandwidth) では、dps_seq における列ベクトルの周波数領域エネルギー集中率 lambda が返されます。この比率は、[–Fs/2,Fs/2] からの総エネルギーに対する、通過帯域 [–W,W] のエネルギー量を表し、変数 Fs はサンプル レートを表します。

[___] = dpss(seq_length,time_halfbandwidth,num_seq) では time_halfbandwidth に等しい時間-半帯域積をもつ最初の num_seq 個のスレピアン列が返されます。この関数は、エネルギー集中率の順にシーケンスを返します。

[___] = dpss(seq_length,time_halfbandwidth,interp_method) では、ユーザーの作成した DPSS のデータベースから、内挿を使用して DPSS が計算されます。dpsssave を使用して DPSS のデータベースを作成し、結果として得られる dpss.mat ファイルが MATLAB® 検索パスにあることを確認します。

[___] = dpss(___,Ni) では、データベース dpss.mat にある長さ Ni の DPSS から内挿が行われます。

[___] = dpss(___,"trace") では、DPSS の計算に使用される手法がコマンド ウィンドウに表示されます。表示される可能性のある手法としては、直接内挿、スプライン内挿や線形内挿などがあります。

すべて折りたたむ

長さが 512 である、最初の 4 つの離散扁長回転楕円体列を作成します。シーケンスの計算に使用されるアルゴリズムを表示する場合は、2 の時間-半帯域積を指定し、"trace" フラグを含めます。

seq_length = 512; 
time_halfbandwidth = 2;
num_seq = 4;
[dps_seq,lambda] = dpss(seq_length,time_halfbandwidth,num_seq,"trace");
Computing the DPSS using direct algorithm...

シーケンスをプロットし、集中率を表示します。

plot(dps_seq)
title("Slepian Sequences, N = 512, NW = 2")
axis([0 512 -0.15 0.15])
legend("1st","2nd","3rd","4th")

Figure contains an axes object. The axes object with title Slepian Sequences, N = 512, NW = 2 contains 4 objects of type line. These objects represent 1st, 2nd, 3rd, 4th.

concentration_ratios = lambda'
concentration_ratios = 1×4

    0.9999    0.9976    0.9594    0.7218

時間-半帯域積、シーケンスの長さ、集中率を入力として関数 dpsssave を使用し、スレピアン列のデータベースを作成します。

dpsssave(time_halfbandwidth,dps_seq,lambda); 

スプライン内挿を使用して、dpss.mat から長さが 256 の離散扁長回転楕円体列を計算します。結果をプロットします。

spline_dps_seq = dpss(256,time_halfbandwidth,"spline");
plot(spline_dps_seq)
title("Interpolated Slepian Sequences, N = 256, NW = 2")
axis([0 512 -0.15 0.15])
legend("1st","2nd","3rd","4th")

Figure contains an axes object. The axes object with title Interpolated Slepian Sequences, N = 256, NW = 2 contains 4 objects of type line. These objects represent 1st, 2nd, 3rd, 4th.

入力引数

すべて折りたたむ

列の長さ。正の整数として指定します。

データ型: single | double

時間-半帯域積。正のスカラーで指定します。この引数は seq_length/2 より小さくなければなりません。

データ型: single | double

返されるシーケンスの数。正の整数または 2 要素ベクトルとして指定します。num_seq を 2 要素ベクトルとして指定した場合、出力されるスレピアン列は、num_seq(1) から num_seq(2) までの範囲となります。

データ型: single | double

内挿法。"spline" または "linear" として指定します。内挿法では、データベース内のスレピアン列が、time_halfbandwidth に等しい時間-半帯域積、および seq_length に最も近い長さと共に使用されます。

データ型: char | string

DPSS の長さ。正の整数として指定します。

データ型: single | double

出力引数

すべて折りたたむ

スレピアン列。行数が seq_length に等しく、列数が round(2*time_halfbandwidth) に等しい行列として返されます。

周波数領域エネルギー集中率。スレピアン列数に等しい長さの列ベクトルとして返されます。

詳細

すべて折りたたむ

離散扁長回転楕円体列

離散扁長回転楕円体列、すなわちスレピアン列は、次の時間-周波数集中の問題から派生するものです。すべての有限エネルギーのシーケンス x[n] のインデックスが設定された [N1,N1+N2] に制限されている場合、次の比率が最大になるのはどのシーケンスであるかを考えます。

λ=WW|X(f)|2dfFs/2Fs/2|X(f)|2df

ここで、Fs はサンプル レートで、|W|<Fs/2 です。すなわち、インデックスが制限されたシーケンスは帯域 [–W,W] において最大比率のエネルギーをもちます。インデックスが制限されたシーケンスでは、この比率は不等式 0<λ<1 を満たさなければなりません。比率を最大化するシーケンスが、第 1 の離散扁長回転楕円体列、またはスレピアン列となります。第 2 のスレピアン列は、比率が最大になり、第 1 のスレピアン列と直交します。第 3 のスレピアン列は、積分の比率が最大になり、第 1 と第 2 の両方のスレピアン列と直交します。このように操作を継続していくと、スレピアン列は、帯域制限されたシーケンスの直交集合を形成します。

時間と半帯域幅との積

時間と半帯域幅との積は NW で表され、N はシーケンスの長さ、[–W,W] はシーケンスの有効帯域幅を示します。スレピアン列の構築では、希望のシーケンス長と帯域幅 2W を選択します。シーケンス長と帯域幅の両方が、1 に近い集中率となるスレピアン列の数に影響します。一般に、エネルギー集中率がほぼ 1 に等しくなるスレピアン列は、2NW – 1 個存在します。スレピアン列が 2NW – 1 個を超えると、集中率はゼロへと近づき始めます。時間と半帯域幅との積には一般に、次の値が選択されます。2.5、3、3.5、4。

スレピアン列の帯域幅は、時間と半帯域幅の積を NW/Fs と定義することにより、Hz 単位で指定できます。ここで、Fs はサンプル レートを表します。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する