Main Content

bsxfun

暗黙的な拡張を有効にして 2 つの配列に要素単位の演算を適用

説明

C = bsxfun(fun,A,B) は、関数ハンドル fun に指定された要素単位の二項演算を配列 AB に適用します。

すべて折りたたむ

行列 A の対応する列要素から列平均を減算します。その後、標準偏差によって正規化します。

A = [1 2 10; 3 4 20; 9 6 15];
C = bsxfun(@minus, A, mean(A));
D = bsxfun(@rdivide, C, std(A))
D = 3×3

   -0.8006   -1.0000   -1.0000
   -0.3203         0    1.0000
    1.1209    1.0000         0

MATLAB® R2016b 以降では、bsxfun の代わりに演算子を直接使用できます。これは、互換性のあるサイズの配列の暗黙的な拡張を演算子が個別にサポートしているためです。

(A - mean(A))./std(A)
ans = 3×3

   -0.8006   -1.0000   -1.0000
   -0.3203         0    1.0000
    1.1209    1.0000         0

列ベクトルと行ベクトルの要素を比較します。結果は、ベクトルの要素の組み合わせごとの比較を含む行列です。この演算を実行する等価の方法では、A > B を使用します。

A = [8; 17; 20; 24]
A = 4×1

     8
    17
    20
    24

B = [0 10 21]
B = 1×3

     0    10    21

C = bsxfun(@gt,A,B)
C = 4x3 logical array

   1   0   0
   1   1   0
   1   1   0
   1   1   1

関数 f(a,b)=a-eb を表す関数ハンドルを作成します。

fun = @(a,b) a - exp(b);

bsxfun を使用して、関数をベクトル ab に適用します。関数 bsxfun は、ベクトルを同じサイズの行列に拡張します。これは、多数の入力の組み合わせについて fun を評価する効率的な方法です。

a = 1:7;
b = pi*[0 1/4 1/3 1/2 2/3 3/4 1].';
C = bsxfun(fun,a,b)
C = 7×7

         0    1.0000    2.0000    3.0000    4.0000    5.0000    6.0000
   -1.1933   -0.1933    0.8067    1.8067    2.8067    3.8067    4.8067
   -1.8497   -0.8497    0.1503    1.1503    2.1503    3.1503    4.1503
   -3.8105   -2.8105   -1.8105   -0.8105    0.1895    1.1895    2.1895
   -7.1205   -6.1205   -5.1205   -4.1205   -3.1205   -2.1205   -1.1205
   -9.5507   -8.5507   -7.5507   -6.5507   -5.5507   -4.5507   -3.5507
  -22.1407  -21.1407  -20.1407  -19.1407  -18.1407  -17.1407  -16.1407

入力引数

すべて折りたたむ

適用する二項関数。関数ハンドルとして指定します。fun は、互換性のあるサイズの配列 AB を受け入れる、C = fun(A,B) 形式の二項 (2 入力) の要素単位の関数でなければなりません。詳細については、基本的な演算で互換性のある配列サイズを参照してください。fun は、A または B がスカラーの場合に、C が、他の入力配列のすべての要素にスカラーを適用した結果になるような、スカラー拡張をサポートしていなければなりません。

MATLAB® R2016b 以降では、この表に挙げる組み込み二項関数は暗黙的な拡張を個別にサポートしています。bsxfun の代わりにこれらの関数を使用して、関数または演算子を直接呼び出すことができます。たとえば、C = bsxfun(@plus,A,B)A+B に置き換えることができます。

関数記号説明
plus

+

加算

minus

-

減算

times

.*

配列の乗算

rdivide

./

配列の右除算

ldivide

.\

配列の左除算

power

.^

配列のべき乗

eq

==

等しい

ne

~=

等しくない

gt

>

より大きい

ge

>=

以上

lt

<

より小さい

le

<=

以下

and

&

要素ごとの論理積

or

|

要素ごとの論理和

xor

N/A

排他的論理和

bitand

N/A

ビット単位の AND

bitor

N/A

ビット単位の OR

bitxor

N/A

ビット単位の XOR

max

N/A

最大値

min

N/A

最小値

mod

N/A

除算後の除数

rem

N/A

除算後の剰余

atan2

N/A

ラジアン単位の 4 象限逆正接

atan2d

N/A

4 象限逆正接 (表示単位: 度)

hypot

N/A

二乗和の平方根

例: C = bsxfun(@plus,[1 2],[2; 3])

データ型: function_handle

入力配列。スカラー、ベクトル、行列または多次元配列として指定します。入力 AB は、互換性のあるサイズでなければなりません。詳細については、基本的な演算で互換性のある配列サイズを参照してください。A または B は大きさが 1 の次元 (1 次元) である場合には常に、bsxfun はもう一方の配列と一致する次元に沿って配列を実質的に複製します。A または B の次元が単集合である場合で、かつ他の配列の対応次元がゼロである場合、bsxfun は実質的に大きさが 1 の次元をゼロに減じます。

データ型: single | double | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64 | char | logical
複素数のサポート: あり

ヒント

  • 使用されている bsxfun の大部分を、暗黙的な拡張をサポートする関数および演算子の直接呼び出しに置き換えることをお勧めします。bsxfun を使用する場合と比べて、暗黙的な拡張では実行速度が向上し、メモリ使用量も少なく、コードの可読性も高くなります。詳細については、基本的な演算で互換性のある配列サイズを参照してください。

拡張機能

バージョン履歴

R2007a で導入