Main Content

struct2dataset

(非推奨) 構造体配列のデータセット配列への変換

dataset データ型は推奨されません。異種混合データを処理するには、代わりに MATLAB® table データ型を使用します。詳細は、MATLAB table ドキュメンテーションを参照してください。

説明

ds = struct2dataset(S) は構造体配列をデータセット配列に変換します。

ds = struct2dataset(S,Name,Value) は、追加のオプションを使用して変換を実行します。これらのオプションは 1 つ以上の Name,Value のペアの引数で指定されます。

すべて折りたたむ

既定のオプションを使用してスカラー構造体配列をデータセット配列に変換します。

変換する構造体配列を作成します。

S.Name = {'CLARK';'BROWN';'MARTIN'};
S.Gender = {'M';'F';'M'};
S.SystolicBP = [124;122;130];
S.DiastolicBP = [93;80;92];
S
S = struct with fields:
           Name: {3x1 cell}
         Gender: {3x1 cell}
     SystolicBP: [3x1 double]
    DiastolicBP: [3x1 double]

このスカラー構造体配列には 4 つのフィールドがあり、各フィールドが 3 つの行で構成されています。

構造体配列をデータセット配列に変換します。

ds = struct2dataset(S)
ds = 
    Name              Gender       SystolicBP    DiastolicBP
    {'CLARK' }        {'M'}        124           93         
    {'BROWN' }        {'F'}        122           80         
    {'MARTIN'}        {'M'}        130           92         

S の構造体のフィールド名が、出力データセット配列では変数名になります。ds のサイズは 3 行 4 列です。

構造体フィールドの 1 つ観測名に使用して、非スカラー構造体配列をデータセット配列に変換します。

変換する非スカラー構造体配列を作成します。

S(1,1).Name = 'CLARK';
S(1,1).Gender = 'M';
S(1,1).SystolicBP = 124;
S(1,1).DiastolicBP = 93;

S(2,1).Name = 'BROWN';
S(2,1).Gender = 'F';
S(2,1).SystolicBP = 122;
S(2,1).DiastolicBP = 80;

S(3,1).Name = 'MARTIN';
S(3,1).Gender = 'M';
S(3,1).SystolicBP = 130;
S(3,1).DiastolicBP = 92;

S
S=3×1 struct array with fields:
    Name
    Gender
    SystolicBP
    DiastolicBP

これは フィールドが 4 個ある 3 行 1 列の構造体配列です。

観測名に Name フィールドを使用して、この非スカラー構造体配列をデータセット配列に変換します。

ds = struct2dataset(S,'ReadObsNames','Name')
ds = 
              Gender       SystolicBP    DiastolicBP
    CLARK     {'M'}        124           93         
    BROWN     {'F'}        122           80         
    MARTIN    {'M'}        130           92         

構造体フィールド Name がデータセット配列の変数ではなく観測名として使用されるので、ds のサイズは 3 行 3 列になります。

ds.Properties.DimNames
ans = 1x2 cell
    {'Name'}    {'Variables'}

ds.Properties.ObsNames
ans = 3x1 cell
    {'CLARK' }
    {'BROWN' }
    {'MARTIN'}

入力引数

すべて折りたたむ

データセット配列に変換される、入力構造体配列。N 個のフィールドをもち、それぞれが M 行もつスカラー構造体配列、あるいは N 個のフィールドをもつ M 行 1 列の非スカラー構造体配列として指定します。

データ型: struct

名前と値の引数

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

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'ReadObsNames','myField' は、構造体フィールド myField に観測名が含まれることを指定します。

出力データセット配列の観測値名が含まれている構造体フィールドの名前。'ReadObsNames' と、入力構造体配列 S のフィールド名が含まれている文字ベクトルまたは string スカラーから構成されるコンマ区切りのペアとして指定します。フィールド名を指定する場合、struct2dataset はそのフィールドを使って観測名を作成し、ds.Properties.DimNames{ReadObsNames,'Variables'} に設定します。

たとえば、構造体のフィールドの観測名である Names を指定するには、次を使用します。

例: 'ReadObsNames','Names'

既定の設定を使用する場合や ReadObsNamesfalse の場合には、名前と値のペアの引数 ObsNames を使用して名前を指定しない限り、struct2dataset は観測名を作成しません。

出力データセット配列の観測値名。'ObsNames' と、観測値名が含まれている文字ベクトルの cell 配列または string 配列から構成されるコンマ区切りのペアとして指定します。この観測名は MATLAB 識別子として有効な文字列である必要はありませんが、一意でなければなりません。

スカラー入力構造体配列の処理方法を指定するインジケーター。'AsScalar' と、true または false で構成されるコンマ区切りペアとして指定します。既定値は、S がスカラー構造体配列の場合は true、それ以外の場合は false です。

既定では struct2dataset が、スカラー構造体配列 (N 個のフィールドもち、それぞれ M 行もつ) を、M 行 N 列のデータセット配列に変換します。

代わりにスカラー入力構造体配列に対して AsScalarfalse に設定した場合、struct2datasetS を N 個の観測値をもつデータセット配列に変換します。

出力引数

すべて折りたたむ

出力データセット配列。既定では M 個の観測値と N 個の変数で返されます。

  • S が、N 個のフィールドでそれぞれ M 行もつスカラー構造体配列である場合、ds は M 行 N 列のデータセット配列になります。

  • S が、N 個のフィールドをもつ M 行 1 列の非スカラー構造体配列である場合、ds は M 行 N 列のデータセット配列になります。

  • S が N 個のフィールドで M 行もつスカラー構造体配列であり、AsScalarfalse に設定されている場合、ds は N 個の観測値をもつデータセット配列になります。

バージョン履歴

R2012b で導入