Aplicación de operandos y funciones
Al aplicar un operador o una función, estos pueden operar de dos manera:
- Matricialmente
- operan sobre la matriz como un todo, según está definido por alguna operación o función matemática. Las dimensiones de los operandos y del resultado están establecidas por la definición matemática.
- Elemento-a-elemento
- operan sobre cada uno de los elementos de las matrices intervinientes de manera independiente. Las matrices se utilizan simplemente como un contenedor de datos. Si se opera la matriz X con la Y, el elemento X(i,j) se opera con el elemento Y(i,j) y el resultado de esa operación será el elemento (i,j) de la matriz resultado. Por ello, las matrices operadas han de tener las mismas dimensiones que, a su vez, serán las dimensiones de la matriz resultado.
Ejemplos |
|
El ejemplo más claro para ver la diferencia entre esos modos de aplicación es la operación multiplicación. Definimos X=[1,2;3,4] Y=[0,2;-1,1] Z=[1,2,3;4,5,6]
|
Broadcasting
Cuando uno de los operandos es un escalar la operación se realiza entre el escalar y cada elemento del otro operando (matriz). Es decir, el escalar se expande a una matriz, de la misma dimensión que el otro operando, con todos sus elementos con el mismo valor que el escalar. Luego se hace la operación elemento-a-elemento.
A partir de la versión 3.6.0 esto también se aplica a vectores, es decir, se replica el vector en número de veces necesarias para crear una matriz de la misma dimensión que el otro operando y luego se opera. En esto casos aparecerá un mensaje de advertencia (warning)
Ejemplos |
|
Broadcasting de escalares: Si definimos la matriz A=[1,2,3;4,5,6;7,8,9] y x=3
Broadcasting de vectores:
|