bsxfun
对启用隐式展开的两个数组应用元素级操作
描述
C = bsxfun(<一个href="#bu903f1-fun" class="intrnllnk">
应用函数句柄指定的逐元素二进制操作有趣的
,<一个href="#bu903f1-AB" class="intrnllnk">A、B
)有趣的
到数组一个
而且B
.
例子
矩阵元素与列均值的偏差
用矩阵中相应的列元素减去列的平均值一个
.然后用标准差归一化。
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
,因为操作符独立地支持具有兼容大小的数组的隐式展开。万博1manbetx
(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)
一个=4×18 17 20 24
B = [0 10 21]
B =1×30 10 21
C = bsxfun(@gt,A,B)
C =4x3逻辑阵列1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1
自定义扩展功能
创建一个表示函数的函数句柄 .
Fun = @(a,b) a - exp(b);
使用bsxfun
把函数应用到向量上一个
而且b
.的bsxfun
函数将向量展开为相同大小的矩阵,这是一种有效的求值方法有趣的
对于输入的很多组合。
A = 1:7;B = pi*[0 1/4 /3 / 2/3 /4 1].';C = bsxfun(fun,a,b)
C =7×70 1.0000 2.0000 3.0000 5.0000 6.0000 -1.1933 -0.1933 0.8067 1.8497 -0.8497 0.1503 -3.8105 -2.8105 -1.8105 -0.8105 0.1895 1.1895 2.1895 -7.1205 -6.1205 -5.1205 -3.1205 -1.1205 -9.5507 -8.5507 -7.5507 -4.5507 -3.5507 -22.1407 -21.1407 -20.1407 -18.1407 -17.1407 -16.1407
输入参数
有趣的
- - - - - -应用二进制函数
函数处理
要应用的二进制函数,指定为函数句柄。有趣的
必须是二进制(双输入)元素的形式函数C =有趣(A,B)
接受数组一个
而且B
具有兼容的尺寸。有关更多信息,请参见<一个href="//www.tianjin-qmedu.com/help/techdoc/matlab_prog/compatible-array-sizes-for-basic-operations.html" class="a">基本操作的兼容数组大小.有趣的
必须支持标万博1manbetx量展开,这样如果一个
或B
是标量吗C
是将标量应用于另一个输入数组中的每个元素的结果。
在MATLAB®R2016b及以后版本,本表中列出的内置二进制函数独立支持隐式展开。万博1manbetx使用这些函数,可以直接调用函数或操作符,而不是使用bsxfun
.例如,你可以替换C = bsxfun(@ +,A,B)
与A + B
.
函数 | 象征 | 描述 |
---|---|---|
+ |
|
+ |
- |
|
- |
次 |
|
数组相乘 |
rdivide |
|
右数组分割 |
ldivide |
|
左数组分割 |
权力 |
|
数组权力 |
情商 |
|
平等的 |
不 |
|
不平等的 |
gt |
|
大于 |
通用电气 |
|
大于或等于 |
lt |
|
不到 |
勒 |
|
小于或等于 |
而且 |
|
元素逻辑与 |
或 |
|
元素逻辑或 |
xor |
N/A |
逻辑异或 |
bitand |
N/A |
位操作, |
bitor |
N/A |
位操作或 |
bitxor |
N/A |
位操作XOR |
马克斯 |
N/A |
二进制最大 |
最小值 |
N/A |
二进制最低 |
国防部 |
N/A |
除后模量 |
快速眼动 |
N/A |
除后余数 |
量化 |
N/A |
四象限正切;结果是弧度 |
atan2d |
N/A |
四象限正切;结果是学位 |
函数的 |
N/A |
平方和的平方根 |
例子:C = bsxfun(@plus,[1 2],[2;3))
数据类型:function_handle
A、B
- - - - - -输入数组
标量|向量|矩阵|多维数组
输入数组,指定为标量、向量、矩阵或多维数组。输入一个
而且B
必须具有兼容的尺寸。有关更多信息,请参见<一个href="//www.tianjin-qmedu.com/help/techdoc/matlab_prog/compatible-array-sizes-for-basic-operations.html" class="a">基本操作的兼容数组大小.每当一个维度一个
或B
是单例的(等于1),bsxfun
沿着该维度虚拟复制数组以匹配另一个数组。在维数为的情况下一个
或B
是单例的,在另一个数组中对应的维数为零,bsxfun
实际上将单维度减小到零。
数据类型:单
|双
|uint8
|uint16
|uint32
|uint64
|int8
|int16
|int32
|int64
|字符
|逻辑
复数支持:万博1manbetx是的
提示
建议您替换大部分的使用
bsxfun
直接调用支持隐式展开的函数和操作符。万博1manbetx与使用相比bsxfun
,隐式展开提供了更快的执行速度、更好的内存使用和更好的代码可读性。有关更多信息,请参见<一个href="//www.tianjin-qmedu.com/help/techdoc/matlab_prog/compatible-array-sizes-for-basic-operations.html" class="a">基本操作的兼容数组大小.
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
使用注意事项和限制:
指定的函数不能依赖持续的
变量。
有关更多信息,请参见<一个href="//www.tianjin-qmedu.com/help/techdoc/tall-arrays.html" class="a">高大的数组.
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
代码生成不支持此函数的稀疏矩阵输入。万博1manbetx
GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。
使用注意事项和限制:
代码生成不支持此函数的稀疏矩阵输入。万博1manbetx
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。万博1manbetx有关更多信息,请参见<一个href="//www.tianjin-qmedu.com/help/techdoc/matlab_prog/run-functions-on-threads.html" class="a">在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
看到<一个href="//www.tianjin-qmedu.com/help/parallel-computing/gpuarray.bsxfun.html">
bsxfun
(并行计算工具箱).
分布式阵列
使用并行计算工具箱™跨集群的组合内存对大型数组进行分区。
该函数完全支持分布式数组。万博1manbetx有关更多信息,请参见<一个href="//www.tianjin-qmedu.com/help/parallel-computing/run-matlab-functions-with-distributed-arrays.html" class="a">运行MATLAB函数与分布式阵列(并行计算工具箱).
版本历史
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。