bsxfun
暗黙的な拡張を有効にして 2 つの配列に要素単位の演算を適用
説明
例
行列要素の列平均からの偏差
行列 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
カスタム関数を使用する拡張
関数 を表す関数ハンドルを作成します。
fun = @(a,b) a - exp(b);
bsxfun
を使用して、関数をベクトル a
と b
に適用します。関数 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
— 適用する二項関数
関数ハンドル
適用する二項関数。関数ハンドルとして指定します。fun
は、互換性のあるサイズの配列 A
と B
を受け入れる、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
A,B
— 入力配列
スカラー | ベクトル | 行列 | 多次元配列
入力配列。スカラー、ベクトル、行列または多次元配列として指定します。入力 A
と B
は、互換性のあるサイズでなければなりません。詳細については、基本的な演算で互換性のある配列サイズを参照してください。A
または B
は大きさが 1 の次元 (1 次元) である場合には常に、bsxfun
はもう一方の配列と一致する次元に沿って配列を実質的に複製します。A
または B
の次元が単集合である場合で、かつ他の配列の対応次元がゼロである場合、bsxfun
は実質的に大きさが 1 の次元をゼロに減じます。
データ型: single
| double
| uint8
| uint16
| uint32
| uint64
| int8
| int16
| int32
| int64
| char
| logical
複素数のサポート: あり
ヒント
使用されている
bsxfun
の大部分を、暗黙的な拡張をサポートする関数および演算子の直接呼び出しに置き換えることをお勧めします。bsxfun
を使用する場合と比べて、暗黙的な拡張では実行速度が向上し、メモリ使用量も少なく、コードの可読性も高くなります。詳細については、基本的な演算で互換性のある配列サイズを参照してください。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
コード生成では、この関数のスパース行列入力はサポートされません。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意事項および制限事項:
コード生成では、この関数のスパース行列入力はサポートされません。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
bsxfun
(Parallel Computing Toolbox) を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
この関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2007a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)