Está en la página 1de 11

Vectores

La matriz (array) es el tipo fundamental de dato en MATLAB. La variable


escalar que hemos estudiado en la página anterior es un caso particular de
matriz de dimensión 1×1. Los vectores son las matrices más simples: un
vector fila de m elementos es una matriz de dimensión m×1, un vector
columna de n elementos es una matriz de dimension 1×n. En esta página,
vamos a ver como se crean vectores, como se realizan operaciones con
estas entidades y cómo se accede a sus elementos.
En muchos lenguajes, el primer elemento de un vector (array) tiene índice
cero, en MATLAB tiene índice uno.

Vectores
Un vector x es un conjunto de n números reales
[x1, x2, ....xn]
Geometricamente, representa un punto en el espacio Rn, especificado por
las n coordendas x1, x2, ....xn.
En Física representamos un vector r en el espacio R3 respecto a un Sistema
de Referencia Ortonormal formado por el origen O y tres vectores unitarios
mutuamente perpendiculares. Las direcciones de estos vectores se
denominan, ejes X, Y y Z, respectivamente.
r⃗ =5iˆ+3jˆ−5kˆ
Los coeficientes de los vectores unitarios (las proyecciones del
vector r sobre los ejes coordenados) son las coordendas (x, y, z) del punto
P.
En MATLAB representamos un vector del siguiente modo
>> r=[5 3 -5]
r = 5 3 -5
>> r=[5,3,-5]
r = 5 3 -5

Para crear un vector fila se escribe sus elementos unos a continuación de


los otros separados por espacios o comas, y entre paréntesis cuadrados, tal
como se muestra en el cuadro. Para crear un vector columna se escribe los
elementos unos a continuación de los otros separados por puntos y comas o
bien, en forma columna tal como se indica en el cuadro.
>> r=[5; 3; -5];
>> r=[5
3
-5]
r =
5
3
-5

Podemos convertir un vector fila en columna mediante el operador


transpuesto '
>> r=[1,2,3]'
r = 1
2
3

Un vector con un espaciado constante Δx entre el primer término, xi y el


último término, xf., se crea del siguiente modo:
vector=xi:Δx:xf
>> x=3:2:15
x = 3 5 7 9 12 15
>> y=2:-0.2:1
y = 2.0000 1.8000 1.6000 1.4000 1.2000 1.0000
>> z=-5:3 % el espaciado por defecto es 1
y = -5 -4 -3 -2 -1 0 1 2 3

Creamos el vector
>> x=[0,0.38,0.71,0.92,1.00,0.92,0.71,0.38,0];

En la ventana Workspace vemos la variable x debajo de Name y los


valores que guarda, debajo Value. Seleccionado la variable x, podemos
cambiar los valores que guarda mediante el Variable Editor, que se abre
pulsando el botón del menú Workspace denominado Open selection o
haciendo doble-clic en el nombre de la variable.
Podemos hacer una representación gráfica pulsando en el botón plot(x)

Acceso a los elementos de un vector


Cuando se crea un vector, por ejemplo x=[3,6,9,12,15,18]; la tabla muestra
los indices del x y los valores que guardan los elementos del vector.
Indice 1234 5 6
Valor 3 6 9 12 15 18
En general, un vector fila tiene la forma [r1r2r3 ....rn]. Para acceder a un
elemento i del vector r, ri se escribe r(i). Para acceder la primer elemento se
escribe r(1). Para acceder al último se escribe r(end). La
función lengthdevuelve el número de elementos del vector
>> r=[5 3 -5];
>> r(1)
ans =5
>> r(end)
ans =-5
>> length(r)
ans = 3

Con el operador : podemos acceder a más de un elemento del vector.


Cuando escribimos v(m:n) se accede a los elementos del vector v desde las
posiciones m hasta n. Es la forma de extraer un vector de otro vector. Por
ejemplo, creamos un vector u con los elementos comprendidos entre las
posiciones 3 y 7 ambas incluidas, de un vector v que tiene 10 elementos
>> v=[4 10 -3 7 -1 0 8 13 -7 0];
>> u=v(3:7)
u = -3 7 -1 0 8

Creamos un vector u con los elementos de índice par del vector v.


>> v=[4 10 -3 7 -1 0 8 13 -7 0];
>> u=v(2:2:end)
u = 10 7 0 13 0

Podemos también crear un vector u a partir de otro vector de subíndices.


Por ejemplo, crear un vector u tomando el elemento quinto, primero, cuarto
y octavo elemento del vector v, en este orden.
>> v=[4 10 -3 7 -1 0 8 13 -7 0];
>> u=v([5 1 4 8])
u = -1 4 7 13

Se pueden añadir elementos a un vector de la siguiente forma


>> v=1:4
v = 1 2 3 4
>> v(5:10)=7:3:22
v = 1 2 3 4 7 10 13 16 19 22
>> v(12)=-1
v = 1 2 3 4 7 10 13 16 19 22 0
-1

Si se sobrapasa la dimensión del vector que era 10, se le añade el elemento


de índice 12, al elemento de índice 11 se le asigna automáticamente cero.
Creamos un vector a partir de otros dos vectores, insertamos un escalar
(vector de dimensión 1) al principio de un vector o en medio del vector
>> a=[1 2 3];
>> b=[4 5 6 7];
>> c=[a b]
c = 1 2 3 4 5 6 7
>> d=[-1 a]
d = -1 1 2 3
>> e=[d(1:2) -5 d(3:4)]
e = -1 1 -5 2 3
Se pueden eliminar elementos de un vector
>> e
e = -1 1 -5 2 3
>> e(2:4)=[]
e = -1 3

Más adelante veremos como se accede a los elementos de un vector


mediante los operadores relacionales

Operaciones con vectores


Suma de un escalar y un vector

>> x=[1,2,3];
>> x+5
ans = 6 7 8

Producto de un escalar por un vector

El producto de un vector u por un escalar λ es otro vector v de la misma


dirección, se multiplica cada elemento por el escalar
v=λ⋅u=[λu1 λu2....λun]
>> u=[1,2,3];
>> u*3
ans = 3 6 9

Se pueden realizar más operaciones con un vector, por ejemplo calcular la


raíz cuadrada de un conjunto de datos
>> x=[4 9 16 25];
>> u=sqrt(x)
u = 2 3 4 5
>> 3*u-2
ans = 4 7 10 13

Suma de dos vectores

Los vectores con el mismo número de elementos se pueden sumar o restar.


u=[u1 u2....un] v=[v1 v2....vn]u+v=[u1+v1 u2+v2....un+vn]
>> u=[1,2,3];
>> v=[4,5,6];
>> u+v
ans = 5 7 9

Producto escalar de dos vectores

u⋅v=u⋅v⋅cosθu⋅v=u1v1+u2v2+....+unvn
El producto escalar se obtiene multiplicando el vector fila u por el vector
columna v
(u1u2...un)⎛⎝⎜⎜⎜v1v2...vn⎞⎠⎟⎟⎟=u1v1+u2v2+...+unvn
MATLAB dispone de la función dot(u,v) para calcular el producto escalar
de dos vectores u y v.
>> u = [5 6 7];
>> v = [4 3 2];
>> dot(u,v)
ans = 52
>> u*v'
ans = 52

Cuando el vector u y v coinciden, calculamos el módulo del vector u.


u⋅u=u2=u21+u22+....+u2n
MATLAB dispone de la función norm que calcula el módulo de un vector.
>> u = [5 6 7];
>> norm(u)
ans = 10.4881
>> sqrt(u*u')
ans = 10.4881

A partir de la definición del producto escalar podemos calcular el ángulo


entre los vectores u y v
cosθ=u1⋅v1+u2v2+....+unvnu⋅v
Escribimos la ventana de comandos
>> u = [5 6 7];
>> v = [4 3 2];
>> ang=acosd(dot(u,v)/(norm(u)*norm(v))
ang = 22.9745

Dos vectores u y v son perpendiculares si el producto escalar es cero.


La proyección de un vector u a lo largo de la dirección del vector v se
calcula del siguiente modo: se multiplica escalarmente el vector u por el
vector unitario v/v cuya dirección y sentido son los del vector v.
uv=ucosθ=u⋅vv=u1⋅v1+u2v2+....+unvnv

Por ejemplo, el ángulo que forma el vector u con el eje Z se calcula


u=uxiˆ+uyjˆ+uzkˆcosθ=uzu

Otras formas de crear vectores


En MATLAB hay otras formas alternativas de crear un vector, que como
veremos son muy útiles para el cálculo y representación gráfica de
funciones.
Para crear un vector con espaciado constante especificando el primer
término, xi, el último término xf. y el número de términos, n llamamos a la
función linspace
vector=linspace(xi,xf,n)
>> x=linspace(0,6,5)
x = 0 1.5000 3.0000 4.5000 6.0000

El espaciado constante entre dos valores consecutivos Δx es


Δx=xf−xin−1
Por lo que son equivalentes los vectores definidos por
>> x=0:2:20
>> x=linspace(0,20,11)

Creamos una tabla de valores de la función seno en el intervalo (0, 2π) del
siguiente modo:
>> x=0:pi/5:2*pi
x =0 0.6283 1.2566 1.8850 2.5133 3.1416 3.7699 4.3982 5.0265
5.6549 6.2832
>> y=sin(x)
y =0 0.5878 0.9511 0.9511 0.5878 0.0000 -0.5878 -0.9511 -
0.9511 -0.5878 -0.0000

Creamos una tabla de logaritmos de la siguiente forma


>> x=(1:0.1:1.5)'; %vector columna
>> logs=[x log10(x)]
logs =
1.0000 0
1.1000 0.0414
1.2000 0.0792
1.3000 0.1139
1.4000 0.1461
1.5000 0.1761

La función logspace es similar a linspace pero genera un conjunto de


elementos espaciados logarítmicamente. Por ejemplo, para crear el
vector x=[10,100,1000,10000] escribimos
>> x=logspace(1,4,4)
x = 10 100 1000 10000
Operaciones elemento a elemento
Existen muchas situaciones en las que se requieren operaciones elemento a
elemento similares a las que se lleva a cabo con la suma o la diferencia de
dos vectores de las mismas dimensiones
Sean dos vectores a=[a1 a2 a3] y b=[b1 b2 b3]
Las operaciones de multiplicación, división y exponenciación elemento a
elemento de dos vectores a y b se definen del siguiente modo:
a.*b=[a1b1 a2b2 a3b3]a./b=[a1/b1 a2/b2 a3/b3]a.^b=[(a1)b1 (a2)b2 (a3)b3]
>> u=[1,2,3];
>> v=[4,5,6];
>> u.*v
ans = 4 10 18

Evaluamos una función y=f(x) cuando le proporcionamos el valor de la


variable x.
>> x=2;
>> y=2*x^2-3
y = 5

En MATLAB, podemos utilizar las operaciones elemento a elemento para


evaluar una función para un conjunto de valores de la variable x, y esto nos
va a ser de mucha utilidad en las representaciones gráficas.
>> x=[0,1,-1,2,-3,4];
>> y=2*x.^2-3
y = -3 -1 -1 5 15 29

Obtener una tabla de valores de la función y=x2x3+1 en el intervalo (0.5, 2)


tomando un espaciado Δx=0.1
>> x = 0.5:0.1:2;
>> f = x.^2;
>> g = x.^3+1;
>> y = f./g

Obtener una tabla de valores de la función y=(2x+3)2(x3+2) en el intervalo


(-1, +1) tomando un espaciado Δx=0.1
>> x = -1:0.1:1;
>> f = 2*x+3;
>> g = x.^3+2;
>> y = (f.^2).*g

o bien, en una sola línea


>> x=-1:0.1:1;
>> y=((2*x+3).^2).*(x.^3+2)

Funciones que operan con vectores


>> u = [3 7 2 16];
mean(u) Valor medio de los elementos del vector u >> mean(A)
ans = 7

>> u = [3 7 2 16 9 5 18 13 0
max(u) c es el mayor elemento del vector u >> c = max(u)
c = 18

>> u = [3 7 2 16];
min(u) El más pequeño elemento del vector u >> min(u)
ans = 2

>> u = [3 7 2 16];
Devuelve la suma de todos los elementos del >> sum(u)
sum(u)
vector ans = 28

Ordena los elementos del vector en orden >> u = [3 7 2 16];


sort(u) >> sort(u)
ascendente ans = 2 3 7 16

>> u = [3 7 2 16];
std(u) Devuelve la desviación estándar >> std(u)
ans = 6.3770

>> u = [5 6 7];
Calcula el producto escalar u·v de los >> v = [4 3 2];
dot(u,v) >> dot(u,v)
vectores u y v ans = 52

>> u = [5 6 7];
Calcula el producto vectorial u×v de los >> v = [4 3 2];
cross(u,v) >> cross(u,v)
vectores u y v. ans = -9 18 -9

Suma de los elementos de un vector

La suma sum(u) de los elementos de un vector u es un escalar. La suma


acumulada cumsum(u) de un vector u es otro vector s cuyos elementos
son s(k) k=1...N
s=∑n=1Nx(n)=x(1)+x(2)+....x(N)s(k)=∑n=1kx(n)=x(1)+x(2)+....x(k)

Producto de los elementos de un vector

El producto prod(u) de los elementos de un vector u es un escalar. El


producto acumulado cumprod(u) de un vector u es otro vector p cuyos
elementos son p(k) k=1...N
p=∏n=1Nx(n)=x(1)⋅x(2)....x(N)p(k)=∏n=1kx(n)=x(1)⋅x(2)....x(k)
Probar que
∑n=1Nn=N(N+1)2∏n=1Nn=1⋅2⋅3...⋅N=N!
>> s=sum(1:5)
s = 15
>> fact=prod(1:5)
fact = 120
>> cumsum(1:5)
ans = 1 3 6 10 15
>> cumprod(1:5)
ans = 1 2 6 24 120

Calcular el valor de las expresión para N=8.


∏n=1N(1+3n)
>> n=1:8;
>> u=1+3./n;
>> p=prod(u)
p = 165

Máximo y mínimo

Para obtener el máximo valor de los elementos de un vector


>> x=[0,0.38,0.71,0.92,1.00,0.92,0.71,0.38,0];
>> [xmax, nmax]=max(x)
xmax = 1
nmax = 5
>> x(5)
ans = 1

La función max nos devuelve dos datos, el valor máximo xmax y el


índice nmax del elemento del vector que guarda el máximo. Vemos que el
quinto elemento del vector x guarda el máximo valor 1.0.

Cadena de caracteres (strings)


Una cadena de caracteres es una secuencia de cualquier número de
caracteres encerrados entre comillas simples: 'hola'.
Se puede crear una cadena de caracteres a partir de otras, tal como se hace
con los números
>> texto='hola'
texto=
hola
>> saludo='¿cómo estás?';
>> mas_texto=[texto,' - ',saludo]
mas_texto=
hola - ¿cómo estás?
Los valores numéricos se pueden convertir a cadenas de caracteres
mediante las funciones num2str (números en general ) o int2str (enteros)
>> tF=50; %grado Fahrenheit
>> tC=(tF-32)*5/9; %grado Celsius
>> texto=['La temperatura es ',num2str(tC),' C']
texto =
La temperatura es 10 C

La función strcat concatena cadenas de caracteres lo que como veremos


más adelante es muy útil para trabajar con ecuaciones. Por ejemplo:
θ1=2πtθ2=π2+4πt−π12t2}θ1=θ2+2kπ
>> eq1='2*pi*t';
>> eq2='pi/2+4*pi*t-(pi/12)*t^2';
>> eq=strcat(eq1,'=',eq2,'+k*2*pi')
eq =2*pi*t=pi/2+4*pi*t-(pi/12)*t^2+k*2*pi

También podría gustarte