Main Content

nrPerfectChannelEstimate

完全なチャネル推定

説明

h = nrPerfectChannelEstimate(carrier,pathGains,pathFilters) は、完全なチャネル推定を実行します。この関数は、まず、チャネルのパス ゲイン pathGains とパス フィルターのインパルス応答 pathFilters からチャネル インパルス応答を再構築します。この関数は、次に、直交周波数分割多重 (OFDM) 復調を実行します。carrier は、OFDM 復調のパラメーターを指定します。

h = nrPerfectChannelEstimate(pathGains,pathFilters,nrb,scs,initialNSlot) は、サブキャリア間隔が scs で初期スロット番号が initialNSlot である nrb 個のリソース ブロックに対して OFDM 復調を実行します。

h = nrPerfectChannelEstimate(___,toffset) は、前述のいずれかの構文の入力引数に加えて、タイミング オフセットを指定します。このタイミング オフセットは、再構築された波形における OFDM 復調の開始点を表します。

h = nrPerfectChannelEstimate(___,toffset,sampleTimes) は、前述の構文の入力引数に加えて、チャネル スナップショットのサンプル時間を指定します。

h = nrPerfectChannelEstimate(___,cpl) は、前述のいずれかの構文の入力引数に加えて、入力 carrier を除くサイクリック プレフィックス長を指定します。

h = nrPerfectChannelEstimate(___,Name,Value) は、前述のいずれかの構文の入力引数に加えて、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。

すべて折りたたむ

nrTDLChannelSystem object を使用して、チャネル構成の構造体を定義します。TR 38.901 の Section 7.7.2 の遅延プロファイル TDL-C を使用します。

SR = 7.68e6;
tdl = nrTDLChannel;
tdl.DelayProfile = 'TDL-C';
tdl.DelaySpread = 100e-9;
tdl.MaximumDopplerShift = 300;
tdl.SampleRate = SR;

1 つのサブフレームの持続時間をもつランダムな波形を作成します。

T = SR*1e-3;
tdlInfo = info(tdl);
Nt = tdlInfo.NumTransmitAntennas;
in = complex(randn(T,Nt),randn(T,Nt));

チャネルを介して入力波形を送信します。チャネル フィルター処理で使用されるパス フィルターを取得します。

[~,pathGains] = tdl(in);
pathFilters = getPathFilters(tdl);

指定したブロック数、サブキャリア間隔、およびスロット番号を使用し、完全なチャネル推定を実行します。

NRB = 25;
SCS = 15;
nSlot = 0;

hest = nrPerfectChannelEstimate(pathGains,pathFilters,NRB,SCS,nSlot);
size(hest)
ans = 1×3

   300    14     2

最初の受信アンテナについて、推定チャネル振幅応答をプロットします。

figure;
surf(abs(hest(:,:,1)));
shading('flat');
xlabel('OFDM Symbols');
ylabel('Subcarriers');
zlabel('|H|');
title('Channel Magnitude Response');

拡張サイクリック プレフィックスについて、チャネル推定を繰り返します。

hest = nrPerfectChannelEstimate(pathGains,pathFilters,NRB,SCS, ...
    nSlot,'extended');
size(hest)
ans = 1×3

   300    12     2

更新された結果をプロットします。

figure;
surf(abs(hest(:,:,1)));
shading('flat');
xlabel('OFDM Symbols');
ylabel('Subcarriers');
zlabel('|H|');
title('Channel Magnitude Response with Extended Cyclic Prefix');

nrCDLChannelSystem object を使用して、チャネル構成の構造体を定義します。TR 38.901 の Section 7.7.1 の遅延プロファイル CDL-C を使用します。

 cdl = nrCDLChannel;
 cdl.DelayProfile = 'CDL-D';
 cdl.DelaySpread = 30e-9;
 cdl.MaximumDopplerShift = 5;

1 つのサブフレームの持続時間をもつランダムな波形を作成します。

SR = 15.36e6;
T = SR*1e-3;
cdl.SampleRate = SR;
cdlInfo = info(cdl);
Nt = cdlInfo.NumTransmitAntennas;
in = complex(randn(T,Nt),randn(T,Nt));

チャネルを介して入力波形を送信します。チャネル フィルター処理で使用されるパス フィルターを取得します。

[~,pathGains,sampleTimes] = cdl(in);
pathFilters = getPathFilters(cdl);

パス フィルターとパス ゲインを使用し、タイミング オフセット推定を実行します。

offset = nrPerfectTimingEstimate(pathGains,pathFilters);

完全なチャネル推定を実行します。指定したブロック数、サブキャリア間隔、スロット番号、タイミング オフセット、およびサンプル時間を使用します。

NRB = 25;
SCS = 15;
nSlot = 0;
hest = nrPerfectChannelEstimate(pathGains,pathFilters,...
    NRB,SCS,nSlot,offset,sampleTimes);
size(hest)
ans = 1×4

   300    14     2     8

最初の受信アンテナについて、推定チャネル振幅応答をプロットします。

figure;
surf(abs(hest(:,:,1)));
shading('flat');
xlabel('OFDM Symbols');
ylabel('Subcarriers');
zlabel('|H|');
title('Channel Magnitude Response');

入力引数

すべて折りたたむ

特定の OFDM numerology のキャリア構成パラメーター。nrCarrierConfig オブジェクトとして指定します。そのオブジェクト プロパティのみが、この関数に関連付けられます。

キャリア リソース グリッド内の RB の数。1 ~ 275 の整数として指定します。既定値の 52 は、SCS が 15 kHz である 10 MHz キャリアの RB の最大数に対応します。

データ型: double

キャリアのすべてのチャネルおよび基準信号の kHz 単位のサブキャリア間隔。153060120240480、または 960 として指定します。

データ型: double

スロット番号。非負の整数として指定します。NSlot には、フレームごとのスロット数よりも大きい値を設定できます。たとえば、MATLAB® シミュレーションで送信ループ カウンターを使用してこの値を設定できます。この場合、呼び出しコードでプロパティ値がフレームごとのスロット数を法としていることを確認しなければならない場合があります。

データ型: double

サイクリック プレフィックス長。次のオプションのいずれかとして指定します。

  • 'normal' — この値を使用して、ノーマル サイクリック プレフィックスを指定します。このオプションは、スロット内の 14 個の OFDM シンボルに対応します。

  • 'extended' — この値を使用して、拡張サイクリック プレフィックスを指定します。このオプションは、スロット内の 12 個の OFDM シンボルに対応します。TS 38.211 の Section 4.2 で規定されている numerology では、拡張サイクリック プレフィックス長が 60 kHz のサブキャリア間隔にのみ適用されます。

データ型: char | string

フェージング プロセスのチャネル パス ゲイン。NCS×NP×NT×NR の複素数行列として指定します。ここで、以下のようになります。

  • NCS はチャネル スナップショットの数。

  • NP はパスの数。

  • NT は送信アンテナの数。

  • NR は受信アンテナの数。

データ型: single | double
複素数のサポート: あり

パス フィルターのインパルス応答。NH 行 NP 列の実数行列として指定します。ここで、以下のようになります。

  • NH はインパルス応答のサンプルの数。

  • NP はパスの数。

行列の各列には、遅延プロファイルの各パスに対するフィルターのインパルス応答が格納されます。

データ型: double

リソース ブロックの数。1 ~ 275 の整数として指定します。

データ型: double

kHz 単位のサブキャリア間隔。153060120240480、または 960 として指定します。

データ型: double

初期スロット番号 (0 ベース)。非負の整数として指定します。この関数は、サブフレームごとのスロット数を法とする initialNSlot の値に基づいて、OFDM 復調に適したサイクリック プレフィックス長を選択します。

データ型: double

サンプル数で表されたタイミング オフセット。非負の整数として指定します。このタイミング オフセットは、再構築された波形における OFDM 復調の開始点を表します。このオフセットでは伝播遅延が考慮されます。これは、同期された受信機から見えるチャネルの完全な推定を求める際に必要です。toffset を入力引数として指定しない場合、その既定値は nrPerfectTimingEstimate(pathGains,pathFilters) となります。

データ型: double

チャネル スナップショットのサンプル時間。非負の実数から成る NCS 行 1 列の列ベクトルとして指定します。sampleTimes は、各チャネル スナップショットの発生時間を指定します。チャネル スナップショットの数 NCS は、pathGains の最初の次元と同じです。sampleTimes を指定しない場合、その既定値は、0 から始まる時間から成る NCS 行 1 列のベクトルになります。また、サンプル レートは OFDM 変調で使用されたもので、リソース ブロックの数 nrb とサブキャリア間隔 scs によって決まります。チャネル スナップショットが少なくとも 1 つのスロットにまたがっていることを確認してください。この関数は、完全な各スロットに対してチャネル推定を実行します。

データ型: double

サイクリック プレフィックス長。次のオプションのいずれかとして指定します。

  • 'normal' — この値を使用して、ノーマル サイクリック プレフィックスを指定します。このオプションは、スロット内の 14 個の OFDM シンボルに対応します。

  • 'extended' — この値を使用して、拡張サイクリック プレフィックスを指定します。このオプションは、スロット内の 12 個の OFDM シンボルに対応します。TS 38.211 の Section 4.2 で規定されている numerology では、拡張サイクリック プレフィックス長が 60 kHz のサブキャリア間隔にのみ適用されます。

メモ

  • carrier 入力を指定する場合は、carrier 入力の CyclicPrefix プロパティを使用して、サイクリック プレフィックス長を指定します。入力 cpl を入力 carrier と一緒に使用することはできません。

  • 名前と値のペアの引数 'CyclicPrefix' を使ってサイクリック プレフィックス長を指定する場合、入力 cpl を使用することはできません。

データ型: char | string

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は関係ありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: 'CyclicPrefixFraction',0.75 は、サイクリック プレフィックス長に対する復調の開始位置を指定します。

サイクリック プレフィックス長。'CyclicPrefix' と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'normal' — この値を使用して、ノーマル サイクリック プレフィックスを指定します。このオプションは、スロット内の 14 個の OFDM シンボルに対応します。

  • 'extended' — この値を使用して、拡張サイクリック プレフィックスを指定します。このオプションは、スロット内の 12 個の OFDM シンボルに対応します。TS 38.211 の Section 4.2 で規定されている numerology では、拡張サイクリック プレフィックス長が 60 kHz のサブキャリア間隔にのみ適用されます。

メモ

  • carrier 入力を指定する場合は、carrier 入力の CyclicPrefix プロパティを使用して、サイクリック プレフィックス長を指定します。この名前と値のペアの引数を carrier 入力と一緒に使用することはできません。

  • 入力 cpl を使ってサイクリック プレフィックス長を指定する場合、この名前と値のペアの引数を使用することはできません。

データ型: char | string

高速フーリエ変換 (FFT) 点の数。'Nfft' および 127 より大きい非負の整数または [] で構成されるコンマ区切りのペアとして指定します。指定する値は、サイクリック プレフィックス長が整数値となり、最大占有率が 100% となるものでなければなりません。占有率は (12 × NRB)/Nfft の値として定義されます。ここで、NRB はリソース ブロックの数です。

この入力を指定しなかった場合、または 'Nfft',[] を指定した場合、関数はこの入力の既定値として 127 より大きい整数値を設定します。実際の既定値は、他の入力値によって異なります。

  • SampleRate 入力を指定しなかった場合、または 'SampleRate',[] を指定した場合、関数は次の条件を満たす Nfft を設定します。

    • 2 の整数乗の Nfft

    • 最大占有率が 85% になる Nfft

  • SampleRate 入力を指定した場合、関数は次の条件を満たす Nfft を設定します。

    • サイクリック プレフィックス長が整数値になる Nfft

    • gcd (Nfft × SCS, SampleRate) の値を最大化する Nfft。ここで、SCS は carrier.SubcarrierSpacing プロパティまたは scs 入力によって指定される。

詳細については、OFDM サンプル レートと FFT サイズの構成を参照してください。

データ型: double

波形のサンプル レート。'SampleRate' および正のスカラー値または [] で構成されるコンマ区切りのペアとして指定します。

この入力を指定しなかった場合、または 'SampleRate',[] を指定した場合、関数はこの入力に Nfft × SCS の値を設定します。

  • Nfft'Nfft' 入力の値。

  • SCS はサブキャリア間隔。使用する関数構文に応じて、SCS が carrier.SubcarrierSpacing プロパティまたは scs 入力によって指定されます。

詳細については、OFDM サンプル レートと FFT サイズの構成を参照してください。

データ型: double

サイクリック プレフィックス内の高速フーリエ変換 (FFT) ウィンドウの位置。'CyclicPrefixFraction' と区間 [0, 1] のスカラーで構成されるコンマ区切りのペアとして指定します。

指定する値は、サイクリック プレフィックスの先頭に対する OFDM 復調の開始位置を示します。

データ型: double

出力引数

すべて折りたたむ

完全なチャネル推定。NSC×NSYM×NR×NT の複素数配列として返されます。ここで、以下のようになります。

  • NSC はサブキャリアの数。

  • NSYM は OFDM シンボルの数。

  • NR は受信アンテナの数。

  • NT は送信アンテナの数。

hpathGains からデータ型を継承します。

データ型: double | single

参照

[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

拡張機能

バージョン履歴

R2018b で導入

すべて展開する