ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

structfun

スカラー構造体の各フィールドに関数を適用

構文

[A1,...,An] = structfun(func,S)
[A1,...,An] = structfun(func,S,Name,Value)

説明

[A1,...,An] = structfun(func,S) は、スカラー構造体 S の各フィールドに関数ハンドル func で指定された関数を適用します。出力配列 A1,...,An は、関数呼び出しからの出力を含んでいます。ここで、n は関数 func からの出力の数です。

[A1,...,An] = structfun(func,S,Name,Value) では、1 つまたは複数の Name,Value の引数ペアで指定された追加オプションを使用して、関数 func を呼び出します。Name に設定可能な値は、'UniformOutput' または 'ErrorHandler' です。

入力引数

func

単一の入力引数を受け入れて n 個の出力引数を返す関数のハンドル。

関数 func が複数の関数ファイルに対応している場合 (つまり、func がオーバーロードされた関数セットを表す場合)、MATLAB® は入力引数のクラスに基づいて呼び出す関数を決定します。

S

スカラー構造体。

名前/値のペアの引数

オプションの Name,Value 引数のペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

'UniformOutput'

論理値は以下のとおりです。

true (1)

すべての入力に対して、関数 func からの各出力が、常に同じ型とサイズをもつスカラー セル配列、スカラー構造体またはスカラー値になることを指定します。関数 structfun は、出力を配列 A1,...,An に統合します。ここで、n は関数出力の数です。各出力配列は、個々の関数出力と同じタイプです。

false (0)

関数 structfun が入力構造体 S と同じフィールドをもつスカラー構造体 A1,...,An に出力を結合するように要求します。関数 func の出力は、任意のサイズまたはタイプにすることができます。

既定値: true

'ErrorHandler'

MATLAB が関数 func を実行しようとしたときに発生するすべてのエラーを検出する関数のハンドル。この関数を定義して、エラーを再スローするか、関数 func に対して有効な出力を返すようにします。

MATLAB は、以下の 2 つの入力引数を使用して、指定されたエラー処理関数を呼び出します。

  • 構造体には以下のフィールドがあります。

    identifier

    エラー識別子。

    message

    エラー メッセージ テキスト。

    index

    エラー発生時の入力セル配列の要素に対応する線形インデックス。

  • エラー発生時の関数 func への入力引数の集合。

出力引数

A1,...,An

関数 func から n 個の出力を収集する配列。

UniformOutputtrue (既定の設定) の場合、次のようになります。

  • 関数 func の個々の出力は、スカラー値 (数値、論理値、文字)、スカラー構造体またはスカラー セル配列でなければなりません。

  • 特定の出力引数のクラスは、各入力に対して同じでなければなりません。対応する出力配列のクラスは、関数 func からの個々の出力のクラスと同じです。

  • 各配列 A は、長さが S のフィールド数と等しい列ベクトルです。関数 structfun は、関数 fieldnames によって返される順序と同じ順序で関数 funcS のフィールドに適用します。

UniformOutputfalse の場合、各配列 A は入力 S と同じフィールドをもつスカラー構造体です。

スカラー構造体を作成し、各フィールドの文字数を数えます。

s.f1 = 'Sunday';
s.f2 = 'Monday';
s.f3 = 'Tuesday'; 
s.f4 = 'Wednesday';
s.f5 = 'Thursday';
s.f6 = 'Friday';
s.f7 = 'Saturday';

lengths = structfun(@numel, s)

前の例で作成した s の各フィールド内のテキストを短くします。出力は非スカラーなので、UniformOutputfalse に設定します。

shortNames = structfun(@(x) ( x(1:3) ), s, 'UniformOutput', false)

構文 @(x) は無名関数を作成します。

カスタム エラー処理関数を定義して呼び出します。

function result = errorfun(errorinfo, field)
   warning(errorinfo.identifier, errorinfo.message);
   result = NaN;
end

mystruct.f1 = 'text';
myresult = structfun(@(x) x^2, mystruct, 'ErrorHandler', @errorfun)

拡張機能

R2006a より前に導入

この情報は役に立ちましたか?