En Matlab posiblemente el operador más utilizado es dos puntos. Con él es posible crear vectores espaciados que se pueden utilizar para seleccionar subíndices en arrays e iterar sobre los bucles for
. Pero en muchas ocasiones puede carecer de suficiente flexibilidad. Para ello existen funciones como linspace
y logspace
con las que es posible disponer de mayor control para generar vectores con valores espaciados. En esta entrada se va a comparar la función linespace y el operador dos puntos en Matlab.
El operador dos puntos
El funcionamiento del operador dos puntos es bastante simple. Se escribe el primer valor de la serie, dos puntos y el último valor. Inmediatamente Matlab creará un vector que comienza en el primero y termina en el último, ambos incluidos, en paso de uno. Por ejemplo, el vector [1, 2, 3]
se puede generar mediante 1:3
.
En el caso de que se desee que el paso de la serie no sea la unidad se puede indicar utilizando tres números separados por dos puntos. En este caso el primer número será el valor inicial, el segundo el paso y el tercero el final. Por ejemplo, el vector [1, 3, 5]
se puede conseguir con 1:2:5
. También se puede generar con 1:2:6
, ya que la serie nunca superará el segundo valor. El paso no tiene porque ser positivo ni entero. En el caso de que sea negativo la serie se generará en orden inverso. Así se puede conseguir el vector [3, 2, 1]
con 3:-1:1
.
Finalmente, si el valor inicial es mayor que el final y no se indica un paso negativo se obtendrá un vector vacío.
La función linespace
La función linespace
de Matlab también genera un vector que comienza en un valor y termina en otro. A diferencia del operador dos puntos en necesario indicar el número de pasos. Por ejemplo, el vector [1, 2, 3]
se generaría con linspace(1, 3, 3)
, mientras que [1, 3, 5] con linspace(1,5,3)
. Si no se indica el número de pasos en linspace
generará siempre 100 valores.
Al generar la serie equiespaciada entre dos valores esta función es más útil cuando no se conoce el paso necesario. Siendo más adecuado para muestrear que el operador dos puntos.
La función logspace
Por otro lado, la función logspace
es una versión de linspace
en la que el espaciado de los puntos es logaritmo, en lugar de lineal. Para ello crea una serie de vectores desde diez elevado al primer valor hasta diez elevado al último. Por ejemplo, logspace(0, 1, 3)
produce el vector [1, 3.1623, 10]
.
Para crear un vector entre dos valores, en lugar de sus potencia, se puede utilizar logspace(log10(a), log10(b), n)
. En donde a
es el primer valor de la serie, b
el segundo y n
es el número de puntos.
Ejemplo de la función linespace
y el operador dos puntos en Matlab
A continuación se muestran algunos ejemplo del operador dos puntos y su equivalente con linespace
.
% Operador dos puntos 1:3:7 % [1 4 7] 7:-3:1 % [7 4 1] 1:1/2:2 % [1 1.5 2] 3:1 % [] % Equivalencias con linspace linspace(1, 7, 3) % [1 4 7] linspace(7, 1, 3) % [1 4 7] linspace(1, 2, 3) % [1 1.5 2]
Conclusiones
En esta entrada se ha visto la función linespace y el operador dos puntos en Matlab. Ambas permiten generar vectores con series de valores, una en base a la separación u otro en base al número de puntos.
Imágenes: Pixabay (Pexels)
Deja una respuesta