このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
arrayfun
配列の個々の要素に関数を適用
構文
説明
は、B
= arrayfun(func
,A
)A
の要素ごとに関数 func
を適用します。次に、arrayfun
は A
の i
番目の要素について B(i) = func(A(i))
となるように func
の出力を出力配列 B
に連結します。入力引数 func
は関数ハンドルであり、この関数は 1 つの入力引数を取ってスカラーを返します。この構文を使用するには、func
からの出力が常に同じデータ型でなければなりません。関数の出力のデータ型が異なる場合は、名前と値の引数 UniformOuput
を false
に設定する必要があります。配列 A
と B
のサイズは同じです。
arrayfun
での B
の要素の計算順序を指定したり、特定の順序で計算される要素に依存することはできません。
は、1 つ以上の B
= arrayfun(___,Name,Value
)Name,Value
のペアの引数で指定された追加オプションを使って func
を適用します。たとえば、出力値を cell 配列で返すには、'UniformOutput',false
を指定します。func
の返した値を配列に連結できない場合に、cell 配列として B
を返すことができます。前述の構文のいずれかの入力引数と Name,Value
のペアの引数を使用することができます。
[B1,...,Bm] = arrayfun(___)
は、func
が m
個の出力値を返す場合に、複数の出力配列 B1,...,Bm
を返します。func
は異なるデータ型の出力引数を返すことができますが、func
の呼び出しごとに各出力のデータ型は同じでなければなりません。この構文では、前述の構文の入力引数のいずれかを使用できます。
func
の出力引数の数は、A1,...,An
に指定された入力引数の数と一致する必要はありません。
例
入力引数
出力引数
制限
異種混合配列
UniformOutput
がtrue
に設定されている場合、arrayfun
は異種混合配列をサポートしません。複素数からなる入力配列の動作の違い
入力配列
A
が複素数の配列であり、虚数部が 0 に等しい要素があると、arrayfun
呼び出しと、配列のインデックス付けとで結果が異なる場合があります。arrayfun
は、常にそのような数を虚数部が 0 に等しい複素数として扱います。しかし、インデックス付けは、そのような値を実数として返します。動作の違いを説明するために、まず複素数の配列を作成します。
A = zeros(2,1); A(1) = 1; A(2) = 0 + 1i
A = 1.0000 + 0.0000i 0.0000 + 1.0000i
次に cell 配列を作成し、
A
の要素を割り当てます。A(1)
にインデックスを付けると、虚数部が 0 に等しいため、その値は実数として返されます。cell 配列は異なる型をもつデータを保存できるため、実数値と複素数値をC1
の異なる cell に保存できます。C1 = cell(2,1); C1{1} = A(1); C1{2} = A(2)
C1 = 2×1 cell array {[ 1]} {[0.0000 + 1.0000i]}
arrayfun
を呼び出して、A
の要素にアクセスします。値を cell 配列に割り当てます。arrayfun
は、A(1)
にアクセスするとき、この値を複素数として扱い、C2{1}
に割り当てます。C2 = arrayfun(@(x) x, A, 'UniformOutput', false)
C2 = 2×1 cell array {[1.0000 + 0.0000i]} {[0.0000 + 1.0000i]}
拡張機能
バージョン履歴
R2006a より前に導入
参考
structfun
| cellfun
| spfun
| cell2mat
| splitapply
| varfun
| rowfun
| groupsummary