メインコンテンツ

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

heldeintrlv

R2026a

helintrlv を使用したシンボルの並べ替えられた順序の復元

構文

[deintrlved,state] = heldeintrlv(data,col,ngrp,stp)
[deintrlved,state] = heldeintrlv(data,col,ngrp,stp,init_state)
deintrlved = heldeintrlv(data,col,ngrp,stp,init_state)

説明

[deintrlved,state] = heldeintrlv(data,col,ngrp,stp) は、シンボルの順序を行ごとに配列に配置し、らせん状にグループを選択して出力 deintrlved 内に配置し、data 内のシンボルの順序を復元します。data には、col*ngrp 要素がなければなりません。data が複数行と列からなる行列の場合、col*ngrp 行がなければなりません。また、関数は列を個別に処理します。state は、配列の最終状態を示す構造体です。state.value には、配列の col 列内に維持され、出力に表示されない入力シンボルが格納されます。

この関数は内部計算に配列を使用します。配列には、1、2、3、... と順番にインデックス付けされる無限数の行と col 列があります。関数は配列の上位をゼロで初期化します。次に、col*ngrp シンボルを入力から配列の次の ngrp 行に配置します。この関数は出力 intrlved の配列からシンボルを配置し、同時に ngrp シンボルを配置します。ngrp シンボルの k 番目の集合は、行 1+(k-1)*stp から始まる、配列の k 番目の列からのものです。出力シンボルの一部は入力シンボルではなく既定値 0 です。同様に、入力シンボルの一部は配列に残り、出力に表示されません。

[deintrlved,state] = heldeintrlv(data,col,ngrp,stp,init_state) は、ゼロの代わりに init_state.value に含まれているシンボルを使用して配列を初期化します。構造体 init_state は通常、この同じ関数を以前に呼び出したときの state 出力で、対応するインターリーバーには無関係です。この構文では、出力シンボルの一部は既定値 0、一部は data からの入力シンボル、一部は init_state.value からの初期値です。

deintrlved = heldeintrlv(data,col,ngrp,stp,init_state) は、デインターリーバーの最終状態を記録しないこと以外は、上の構文と同じです。この構文はこの関数への一連の呼び出しの最後に適しています。しかし、デインターリーバー処理を続行するためにこの関数を再度呼び出す場合は、上記の構文がより適しています。

インターリーバーとデインターリーバーの組み合わせの使用

この関数を関数 helintrlv の逆関数として使用するには、両方の関数で同じ col、ngrp、および stp 入力を使用します。その場合は、両関数は、col*ngrp*ceil(stp*(col-1)/ngrp) の複合遅延を考慮した後 helintrlv に続いて heldeintrlv を適用するとデータが変更されないという意味で逆関数といえます。畳み込みインターリーバーの遅延の詳細については、畳み込みインターリーバーの遅延を参照してください。

メモ

遅延は data 内のシンボル数の整数倍であるため、関数が遅延とそれ以外を示す結果を出力するには heldeintrlv を最低でも "2 回" 使用しなければなりません (実際の遅延値によっては 2 回より多くなる可能性があります)。

例

インターリーバーとデインターリーバーの組み合わせの遅延を考慮して、インターリーブされたデータを復元します。

下記の出力はシンボル エラーが発生していないことを示します。

ser =

     0

バージョン履歴

R2006a より前に導入