Main Content

helintrlv

ヘリカル配列を使用したシンボルの並べ替え

構文

intrlved = helintrlv(data,col,ngrp,stp)
[intrlved,state] = helintrlv(data,col,ngrp,stp)
[intrlved,state] = helintrlv(data,col,ngrp,stp,init_state)

説明

intrlved = helintrlv(data,col,ngrp,stp) は、無制限数の行配列にらせん状に配置し配列の行を出力 intrlved に配置することで data のシンボルを並べ替えます。data には、col*ngrp 要素がなければなりません。data が複数の行と列をもつ行列の場合、col*ngrp 行をもたなければならず、また、この関数は列を独立して処理します。

この関数は内部計算に配列を使用します。配列には、1、2、3、... と順番にインデックス付けされる無限数の行と col 列があります。この関数は、入力からの col*ngrp シンボルを ngrp シンボルの連続する集合に分割します。この関数は、配列の k 番目の集合を行 1+(k-1)*stp から k 列に沿って配置します。入力シンボルをもたない配列の位置の既定値は 0 です。この関数は、最初の ngrp 行を順番に読み込むことで、出力 intrlved の配列から col*ngrp シンボルを配置します。出力シンボルの一部は入力シンボルではなく既定値 0 です。同様に、入力シンボルの一部は配列に残り、出力に表示されません。

[intrlved,state] = helintrlv(data,col,ngrp,stp) は、配列の最終状態を保持する構造体を出力します。state.value には、配列の col 列に残り、出力に表示されない入力シンボルが格納されます。

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

下記の例は 1 から 24 までの整数を並べ替えます。

% Interleave some symbols. Record final state of array.
[i1,state] = helintrlv([1:12]',3,4,1);
% Interleave more symbols, remembering the symbols that
% were left in the array from the earlier command.
i2 = helintrlv([13:24]',3,4,1,state);

disp('Interleaved data:')
disp([i1,i2]')
disp('Values left in array after first interleaving operation:')
state.value{:}

helintrlv への連続呼び出し中に、次の 3 列配列を内部的に作成します。

[1  0  0;
 2  5  0;
 3  6  9;
 4  7 10;
 0  8 11;
 0  0 12]

[13  8 11;
 14 17 12;
 15 18 21;
 16 19 22;
  0 20 23;
  0  0 24]

上記の 2 番目の配列では、8、11、12 はこの関数への以前の呼び出しから配列に残った値です。この関数の 2 番目の呼び出しで init_state 入力を指定すると、既定値 0 ではなくこれらの値を使用します。

例の出力は、以下のとおりです (表示のために行列が転置されています)。インターリーブされたデータは上記の 3 列の配列の上位 4 行です。インターリーブされたデータの最初の半分のシンボルの一部は既定値 0、インターリーブされたデータの後半の半分は helintrlv への最初の呼び出しから配列のまま残され、入力シンボルの一部 (20、23、および 24) はインターリーブされたデータにまったく表示されないことに注意してください。

Interleaved data:
  Columns 1 through 10 

     1     0     0     2     5     0     3     6     9     4
    13     8    11    14    17    12    15    18    21    16

  Columns 11 through 12 

     7    10
    19    22

Values left in array after first interleaving operation:

ans =

     []


ans =

     8


ans =

    11    12

heldeintrlv のリファレンス ページの例もこの関数を使用します。

バージョン履歴

R2006a より前に導入