このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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
,sampleTimes
)
は、前述のいずれかの構文の入力引数に加えて、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。h
= nrPerfectChannelEstimate(___,Name,Value
)
例
TDL-C チャネル モデルの推定チャネル振幅応答のプロット
nrTDLChannel
System 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');
CDL-D チャネル モデルの推定チャネル振幅応答のプロット
nrCDLChannel
System 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');
入力引数
carrier
— キャリア構成パラメーター
nrCarrierConfig
オブジェクト
特定の OFDM numerology のキャリア構成パラメーター。nrCarrierConfig
オブジェクトとして指定します。そのオブジェクト プロパティのみが、この関数に関連付けられます。
NSizeGrid
— キャリア リソース グリッド内の RB の数
52
(既定値) | 1 ~ 275 の整数
キャリア リソース グリッド内の RB の数。1 ~ 275 の整数として指定します。既定値の 52
は、SCS が 15 kHz である 10 MHz キャリアの RB の最大数に対応します。
データ型: double
SubcarrierSpacing
— サブキャリア間隔 (kHz)
15
(既定値) | 30
| 60
| 120
| 240
| 480
| 960
キャリアのすべてのチャネルおよび基準信号の kHz 単位のサブキャリア間隔。15
、30
、60
、120
、240
、480
、または 960
として指定します。
データ型: double
NSlot
— スロット番号
0
(既定値) | 非負の整数
スロット番号。非負の整数として指定します。NSlot
には、フレームごとのスロット数よりも大きい値を設定できます。たとえば、MATLAB® シミュレーションで送信ループ カウンターを使用してこの値を設定できます。この場合、呼び出しコードでプロパティ値がフレームごとのスロット数を法としていることを確認しなければならない場合があります。
データ型: double
CyclicPrefix
— サイクリック プレフィックス長
'normal'
(既定値) | 'extended'
サイクリック プレフィックス長。次のオプションのいずれかとして指定します。
'normal'
— この値を使用して、ノーマル サイクリック プレフィックスを指定します。このオプションは、スロット内の 14 個の OFDM シンボルに対応します。'extended'
— この値を使用して、拡張サイクリック プレフィックスを指定します。このオプションは、スロット内の 12 個の OFDM シンボルに対応します。TS 38.211 の Section 4.2 で規定されている numerology では、拡張サイクリック プレフィックス長が 60 kHz のサブキャリア間隔にのみ適用されます。
データ型: char
| string
pathGains
— フェージング プロセスのチャネル パス ゲイン
NCS×NP×NT×NR の複素行列
フェージング プロセスのチャネル パス ゲイン。NCS×NP×NT×NR の複素数行列として指定します。ここで、以下のようになります。
NCS はチャネル スナップショットの数。
NP はパスの数。
NT は送信アンテナの数。
NR は受信アンテナの数。
データ型: single
| double
複素数のサポート: あり
pathFilters
— パス フィルターのインパルス応答
NH 行 NP 列の実数行列
パス フィルターのインパルス応答。NH 行 NP 列の実数行列として指定します。ここで、以下のようになります。
NH はインパルス応答のサンプルの数。
NP はパスの数。
行列の各列には、遅延プロファイルの各パスに対するフィルターのインパルス応答が格納されます。
データ型: double
nrb
— リソース ブロックの数
1 ~ 275 の整数
リソース ブロックの数。1 ~ 275 の整数として指定します。
データ型: double
scs
— サブキャリア間隔 (kHz)
15
| 30
| 60
| 120
| 240
| 480
| 960
kHz 単位のサブキャリア間隔。15
、30
、60
、120
、240
、480
、または 960
として指定します。
データ型: double
initialNSlot
— 初期スロット番号
非負の整数
初期スロット番号 (0 ベース)。非負の整数として指定します。この関数は、サブフレームごとのスロット数を法とする initialNSlot
の値に基づいて、OFDM 復調に適したサイクリック プレフィックス長を選択します。
データ型: double
toffset
— サンプル数で表されたタイミング オフセット
非負の整数
サンプル数で表されたタイミング オフセット。非負の整数として指定します。このタイミング オフセットは、再構築された波形における OFDM 復調の開始点を表します。このオフセットでは伝播遅延が考慮されます。これは、同期された受信機から見えるチャネルの完全な推定を求める際に必要です。toffset
を入力引数として指定しない場合、その既定値は nrPerfectTimingEstimate
(pathGains,pathFilters)
となります。
データ型: double
sampleTimes
— チャネル スナップショットのサンプル時間
非負の実数から成る NCS 行 1 列の列ベクトル
チャネル スナップショットのサンプル時間。非負の実数から成る NCS 行 1 列の列ベクトルとして指定します。sampleTimes
は、各チャネル スナップショットの発生時間を指定します。チャネル スナップショットの数 NCS は、pathGains
の最初の次元と同じです。sampleTimes
を指定しない場合、その既定値は、0 から始まる時間から成る NCS 行 1 列のベクトルになります。また、サンプル レートは OFDM 変調で使用されたもので、リソース ブロックの数 nrb
とサブキャリア間隔 scs
によって決まります。チャネル スナップショットが少なくとも 1 つのスロットにまたがっていることを確認してください。この関数は、完全な各スロットに対してチャネル推定を実行します。
データ型: double
cpl
— サイクリック プレフィックス長
'normal'
(既定値) | 'extended'
サイクリック プレフィックス長。次のオプションのいずれかとして指定します。
'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'
(既定値) | 'extended'
サイクリック プレフィックス長。'CyclicPrefix'
と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。
'normal'
— この値を使用して、ノーマル サイクリック プレフィックスを指定します。このオプションは、スロット内の 14 個の OFDM シンボルに対応します。'extended'
— この値を使用して、拡張サイクリック プレフィックスを指定します。このオプションは、スロット内の 12 個の OFDM シンボルに対応します。TS 38.211 の Section 4.2 で規定されている numerology では、拡張サイクリック プレフィックス長が 60 kHz のサブキャリア間隔にのみ適用されます。
メモ
carrier
入力を指定する場合は、carrier
入力のCyclicPrefix
プロパティを使用して、サイクリック プレフィックス長を指定します。この名前と値のペアの引数をcarrier
入力と一緒に使用することはできません。入力
cpl
を使ってサイクリック プレフィックス長を指定する場合、この名前と値のペアの引数を使用することはできません。
データ型: char
| string
Nfft
— FFT 点の数
127 より大きい整数 (既定値は他の入力値によって異なる) | []
高速フーリエ変換 (FFT) 点の数。'Nfft'
および 127 より大きい非負の整数または []
で構成されるコンマ区切りのペアとして指定します。指定する値は、サイクリック プレフィックス長が整数値となり、最大占有率が 100% となるものでなければなりません。占有率は (12 × NRB)/Nfft
の値として定義されます。ここで、NRB はリソース ブロックの数です。
この入力を指定しなかった場合、または 'Nfft',[]
を指定した場合、関数はこの入力の既定値として 127 より大きい整数値を設定します。実際の既定値は、他の入力値によって異なります。
SampleRate
入力を指定しなかった場合、または'SampleRate',[]
を指定した場合、関数は次の条件を満たすNfft
を設定します。2 の整数乗の
Nfft
。最大占有率が 85% になる
Nfft
。
SampleRate
入力を指定した場合、関数は次の条件を満たすNfft
を設定します。
詳細については、OFDM サンプル レートと FFT サイズの構成を参照してください。
データ型: double
SampleRate
— 波形のサンプル レート
正のスカラー (既定値は他の入力値によって異なる) | []
波形のサンプル レート。'SampleRate'
および正のスカラー値または []
で構成されるコンマ区切りのペアとして指定します。
この入力を指定しなかった場合、または 'SampleRate',[]
を指定した場合、関数はこの入力に Nfft × SCS の値を設定します。
詳細については、OFDM サンプル レートと FFT サイズの構成を参照してください。
データ型: double
CyclicPrefixFraction
— サイクリック プレフィックス内の FFT ウィンドウの位置
0.5
(既定値) | 区間 [0, 1] のスカラー
サイクリック プレフィックス内の高速フーリエ変換 (FFT) ウィンドウの位置。'CyclicPrefixFraction'
と区間 [0, 1] のスカラーで構成されるコンマ区切りのペアとして指定します。
指定する値は、サイクリック プレフィックスの先頭に対する OFDM 復調の開始位置を示します。
データ型: double
出力引数
参照
[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
名前と値の引数
'SampleRate'
はコード生成のコンパイル時の定数でなければなりません。たとえば、'SampleRate',15.36e6
を使って関数を呼び出す場合は、関数codegen
の-args
の値に{coder.Constant('SampleRate'),coder.Constant(15.36e6)}
を含めます。詳細については、coder.Constant
(MATLAB Coder) クラスを参照してください。名前と値の引数
'SampleRate'
を指定する場合、入力引数nrb
、scs
、および名前と値の引数'Nfft'
もコンパイル時の定数でなければなりません。たとえば、関数codegen
の-args
の値に{coder.Constant(nrb)}
と{coder.Constant(scs)}
も含めます。'SampleRate'
の名前と値のペアの引数は、carrier
入力と一緒に使用することはできません。
バージョン履歴
R2018b で導入R2023a: FR2-2 のサブキャリア間隔
この関数は、現在、TS 38.211 の Sections 4.2 および 4.3 の定義に基づき、480 kHz および 960 kHz のサブキャリア間隔をサポートしています。
R2023a: C/C++ コード生成の更新
C/C++ コード生成において、名前と値の引数 'CyclicPrefix'
、'CyclicPrefixFraction'
、または 'Nfft'
をコンパイル時の定数として指定するという制限がなくなりました。ただし、名前と値の引数 'SampleRate'
を指定する場合、名前と値の引数 'Nfft'
はこれまでと同じくコード生成のコンパイル時の定数でなければなりません。
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)