Main Content

データを構造体配列へ整理する方法

データを構造体配列に整理する方法は少なくとも 2 つあります。つまり、面による整理と要素別の整理です。データに最適な方法は、どのようにデータにアクセスするのか、そして膨大なデータセットの場合は、システム メモリの制約があるのかどうかにより異なります。

面による整理を使用すると、フィールド内のすべての値に簡単にアクセスできます。要素別の整理を使用すると、1 つの要素または記録に関連するすべての情報に簡単にアクセスできます。以下の節には、各タイプの整理方法の例があります。

構造体配列を作成すると、MATLAB® では、配列ヘッダー内に各要素とフィールドに関する情報が格納されます。その結果、より多くの要素とフィールドをもつ構造体は、同じデータを含む簡単な構造体に比べ、より多くのメモリを必要とします。

面による整理

色の強度の値に対応する 3 つの配列をもつ RGB イメージを考えてみましょう。

RGB image represented with three arrays

ワークスペースに配列 REDGREEN、および BLUE がある場合、これらのコマンドにより、面による整理を使用する img と名付けられたスカラー構造体が作成されます。

img.red = RED;
img.green = GREEN;
img.blue = BLUE;

面による整理により、簡単にイメージ全体の面を抽出して、表示、フィルター処理、その他の処理などを行うことができます。たとえば、赤の強度の値を 0.9 で乗算します。

adjustedRed = .9 * img.red;

複数のイメージがある場合は、それらを img 構造体に追加して、各要素 img(1),...,img(n) にイメージ全体を含めることができます。要素を構造体に追加する例については、以下の節を参照してください。

要素別の整理

患者の情報が含まれるデータベースを考えてみましょう。各レコードには患者の名前、検査結果、治療費などの情報が含まれています。

Data structure of patient information

これらのステートメントにより、patient と名付けられた構造体配列内に要素が作成されます。

patient(1).name = 'John Doe';
patient(1).billing = 127.00;
patient(1).test = [79, 75, 73; 180, 178, 177.5; 220, 210, 205];

追加の患者は構造体内の新しい要素に対応します。たとえば、第 2 の患者用に要素を追加します。

patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68, 70, 68; 118, 118, 119; 172, 170, 169];

要素別にデータを整理する場合は、特定の患者のデータにアクセスするための単純なインデックス付けがサポートされます。たとえば、最初の患者の検査結果の平均値を出すには、列ごとではなく行 (2 次元) ごとに計算します。

aveResultsDoe = mean(patient(1).test,2)

このコードは、以下の出力を返します。

aveResultsDoe =
   75.6667
  178.5000
  212.0000

参考

関連するトピック