bsxfun
Aplicar una operación elemento por elemento a dos arreglos con la expansión implícita habilitada
Sintaxis
Descripción
Ejemplos
Reste la media de la columna de los elementos correspondientes de cada columna de una matriz A
. Después, normalice por la desviación estándar.
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
En MATLAB® R2016b y versiones posteriores, puede utilizar directamente operadores en lugar de bsxfun
, ya que los operadores admiten de forma independiente la expansión implícita de arreglos con tamaños compatibles.
(A - mean(A))./std(A)
ans = 3×3
-0.8006 -1.0000 -1.0000
-0.3203 0 1.0000
1.1209 1.0000 0
Compare los elementos de un vector columna y un vector fila. El resultado es una matriz que contiene la comparación de cada combinación de elementos de los vectores. Una forma equivalente de ejecutar esta operación es con 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
Cree un indicador de función que represente la función .
fun = @(a,b) a - exp(b);
Use bsxfun
para aplicar la función a los vectores a
y b
. La función bsxfun
expande los vectores a matrices del mismo tamaño, lo que constituye una forma eficaz de evaluar fun
para muchas combinaciones de las entradas.
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
Argumentos de entrada
Función binaria que desea aplicar, especificada como un indicador de función. fun
debe ser una función binaria (de dos entradas) que opera elemento por elemento de la forma C = fun(A,B)
y que acepta los arreglos A
y B
con tamaños compatibles. Para obtener más información, consulte Tamaños de arreglos compatibles para operaciones básicas. fun
debe admitir la expansión escalar, de modo que si A
o B
son un escalar, C
es el resultado de aplicar el escalar a cada elemento del otro arreglo de entrada.
En MATLAB® R2016b y versiones posteriores, las funciones binarias integradas enumeradas en esta tabla admiten de forma independiente la expansión implícita. Con estas funciones, puede llamar directamente a la función o al operador en lugar de utilizar bsxfun
. Por ejemplo, puede reemplazar C = bsxfun(@plus,A,B)
con A+B
.
Función | Símbolo | Descripción |
---|---|---|
plus |
| más |
minus |
| menos |
times |
| multiplicar arreglos |
rdivide |
| división derecha de arreglos |
ldivide |
| división izquierda de arreglos |
power |
| potencia de un arreglo |
eq |
| igual a |
ne |
| no es igual a |
gt |
| mayor que |
ge |
| mayor que o igual a |
lt |
| menor que |
le |
| menor que o igual a |
and |
| AND lógico elemento por elemento |
or |
| OR lógico elemento por elemento |
xor | N/D | OR exclusivo lógico |
bitand | N/D | AND bit por bit |
bitor | N/D | OR bit por bit |
bitxor | N/D | XOR bit por bit |
max | N/D | máximo binario |
min | N/D | mínimo binario |
mod | N/D | módulo después de una división |
rem | N/D | resto después de una división |
atan2 | N/D | tangente inversa de cuatro cuadrantes; resultado en radianes |
atan2d | N/D | tangente inversa de cuatro cuadrantes; resultado en grados |
hypot | N/D | raíz cuadrada de una suma de cuadrados |
Ejemplo: C = bsxfun(@plus,[1 2],[2; 3])
Tipos de datos: function_handle
Arreglos de entrada, especificados como escalares, vectores, matrices o arreglos multidimensionales. Las entradas A
y B
deben tener tamaños compatibles. Para obtener más información, consulte Tamaños de arreglos compatibles para operaciones básicas. Siempre que una dimensión de A
o B
sea igual a uno, bsxfun
replica virtualmente el arreglo a lo largo de esa dimensión para que coincida con el otro arreglo. En el caso de que una dimensión de A
o B
sea igual a uno y la dimensión correspondiente del otro arreglo sea cero, bsxfun
disminuye virtualmente la dimensión que es igual a uno a cero.
Tipos de datos: single
| double
| uint8
| uint16
| uint32
| uint64
| int8
| int16
| int32
| int64
| char
| logical
Soporte de números complejos: Sí
Sugerencias
Se recomienda sustituir la mayoría de los usos de
bsxfun
por llamadas directas a las funciones y operadores que admiten la expansión implícita. En comparación con el uso debsxfun
, la expansión implícita ofrece una mayor velocidad de ejecución, un mejor uso de la memoria y una mejor legibilidad del código. Para obtener más información, consulte Tamaños de arreglos compatibles para operaciones básicas.
Capacidades ampliadas
La función bsxfun
es compatible con arreglos altos con las siguientes notas y limitaciones de uso:
La función especificada no debe depender de variables persistent
.
Para obtener más información, consulte Arreglos altos.
Notas y limitaciones de uso:
La generación de código no es compatible con entradas de matrices dispersas en esta función.
Notas y limitaciones de uso:
La generación de código no es compatible con entradas de matrices dispersas en esta función.
Esta función es totalmente compatible con entornos basados en subprocesos. Para obtener más información, consulte Ejecutar funciones de MATLAB en entornos basados en subprocesos.
La función bsxfun
es compatible con entradas de arreglos de GPU con estas notas y limitaciones de uso:
Consulte
bsxfun
(Parallel Computing Toolbox).
Esta función es totalmente compatible con los arreglos distribuidos. Para obtener más información, consulte Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
Historial de versiones
Introducido en 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.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- 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)