Contenido principal

bsxfun

Aplicar una operación elemento por elemento a dos arreglos con la expansión implícita habilitada

Descripción

C = bsxfun(fun,A,B) aplica la operación binaria elemento por elemento especificada por el indicador de función fun a los arreglos A y B.

ejemplo

Ejemplos

contraer todo

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 f(a,b)=a-eb.

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

contraer todo

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ónSímboloDescripció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:

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 de bsxfun, 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

expandir todo

Historial de versiones

Introducido en R2007a