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 = 4×3 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 は、互換性のあるサイズの配列 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 は大きさが 1 の次元 (1 次元) である場合には常に、bsxfun はもう一方の配列と一致する次元に沿って配列を実質的に複製します。A または B の次元が単集合である場合で、かつ他の配列の対応次元がゼロである場合、bsxfun は実質的に大きさが 1 の次元をゼロに減じます。
データ型: single | double | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64 | char | logical
複素数のサポート: あり
ヒント
使用されている
bsxfunの大部分を、暗黙的な拡張をサポートする関数および演算子の直接呼び出しに置き換えることをお勧めします。bsxfunを使用する場合と比べて、暗黙的な拡張では実行速度が向上し、メモリ使用量も少なく、コードの可読性も高くなります。詳細については、基本的な演算で互換性のある配列サイズを参照してください。
拡張機能
bsxfun 関数は tall 配列をサポートしていますが、以下の使用上の注意および制限があります。
指定された関数は変数 persistent に依存してはなりません。
詳細については、tall 配列を参照してください。
使用上の注意および制限:
コード生成では、この関数のスパース行列入力はサポートされません。
使用上の注意および制限:
コード生成では、この関数のスパース行列入力はサポートされません。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
bsxfun 関数は GPU 配列入力をサポートしますが、次の使用上の注意および制限があります。
bsxfun(Parallel Computing Toolbox) を参照してください。
この関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2007a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)