La sintaxis a:b:c
genera la secuencia de valores que van de a
a c
en incrementos de magnitud b
. Si se omite el valor de b
se genera una secuencia de valores de a
a c
de uno en uno. En general una secuencia de valores es considerada por Matlab como un vector.
>> U=0:10
U =
0 1 2 3 4 5 6 7 8 9 10
>> V=0:2:10
V =
0 2 4 6 8 10
>> W=0:0.1:0.5
W =
0.00000 0.10000 0.20000 0.30000 0.40000 0.50000
>> X=12:-3:-12
X =
12 9 6 3 0 -3 -6 -9 -12
la función linspace(a,b,n)
genera n
valores equiespaciados entre a
y b
.
Por ejemplo, para generar 3 valores entre 1 y 10:
>> linspace(1,10,3)
ans =
1.0000 5.5000 10.0000
Para generar 20 valores entre 0 y 100:
>> linspace(0,100,20)
ans =
Columns 1 through 6:
0.00000 5.26316 10.52632 15.78947 21.05263 26.31579
Columns 7 through 12:
31.57895 36.84211 42.10526 47.36842 52.63158 57.89474
Columns 13 through 18:
63.15789 68.42105 73.68421 78.94737 84.21053 89.47368
Columns 19 and 20:
94.73684 100.00000
La función rand()
crea vectores o matrices de números aleatorios distribuidos uniformemente entre 0 y 1; si se especifica rand(n)
se crea una matriz de dimensión \(n\times n\); si se especifica rand(m,n)
se genera una matriz de dimensión \(m \times n\):
>> rand(1)
ans = 0.58061
>> rand(2)
ans =
0.65882 0.28362
0.21197 0.36883
>> rand(1,4)
ans =
0.87558 0.35632 0.16954 0.46338
>> rand(2,3)
ans =
0.925775 0.133559 0.338582
0.265939 0.735367 0.091354
La función randi()
es similar, pero genera números enteros:
randi(imax)
: genera al azar un número entero entre 1 e imax
.randi(imax, n)
: genera una matriz \(n\times n\) de números enteros elegidos al azar entre 1 e imax
.randi(imax, m, n)
: genera una matriz \(m\times n\) de números enteros elegidos al azar entre 1 e imax
.randi ([imin imax], ...)
: Igual que los comandos anteriores, pero eligiendo los números aleatorios entre imin
e imax
. Donde están los puntos suspensivos podemos poner la dimensión del vector o matriz a generar.Ejemplos:
>> randi(7)
ans = 1
>> randi(7,2,2)
ans =
1 1
7 3
>> randi([3,9],1,10)
ans =
6 4 6 8 8 5 3 6 8 7
La matriz identidad de dimensión \(n\) se define en Matlab como eye(n)
. La razón es que en inglés eye y la letra I (que es el símbolo utilizado habitualmente para la matriz identidad) suenan igual:
>> eye(3)
ans =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
En Matlab una matriz diagonal se construye fácilmente como:
>> diag([1 2 3])
ans =
Diagonal Matrix
1 0 0
0 2 0
0 0 3
Se pueden generar matrices con los términos no nulos en alguna diagonal distinta de la principal. Por ejemplo, la siguiente sintaxis genera una matriz cuadrada con los valores (1,2,3) en la quinta diagonal (NOTA: téngase en cuenta que para Matlab la diagonal principal es la diagonal 0):
>> diag([1 2 3],5)
ans =
0 0 0 0 0 1 0 0
0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 3
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Podemos construir una matriz de unos de dimensión \(m\times n\) como ones(m,n)
:
>> ones(3,2)
ans =
1 1
1 1
1 1
Si queremos que la matriz de unos sea cuadrada de orden \(n\) basta con ones(n)
:
>> ones(3)
ans =
1 1 1
1 1 1
1 1 1
Asimismo una matriz de ceros de dimensión \(m\times n\) se define como zeros(m,n)
:
>> zeros(2,3)
ans =
0 0 0
0 0 0
Si queremos una matriz cuadrada de ceros de orden \(n\) basta con zeros(n)
:
>> zeros(3)
ans =
0 0 0
0 0 0
0 0 0
Un cuadrado mágico es una matriz construida de tal forma que todos sus valores son distintos, y todas sus filas y columnas siempre suman lo mismo. En matlab
se genera un cuadrado mágico de dimensión n x n
mediante la sintaxis magic(n)
:
>> magic(4)
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Genera una matriz de números enteros aleatorios de dimensión 10x12
Construye una matriz tridiagonal que tenga los números 1 a 10 en la diagonal principal, que repita el número 1 en la diagonal superior y el 2 en la diagonal inferior.
Se han observado los siguientes puntos \((x,y)\) en el plano: (1,1), (2,3), (3,4), (3,1), (4,6), (4,4), (5,4), (6,5), (6,7). Estos puntos pueden representarse gráficamente creando dos vectores en matlab, uno con los valores de \(x\) y otro con los valores de \(y\), y utilizando la función plot
:
>> x=[1 2 3 3 4 4 5 6 6]
>> y=[1 3 4 1 6 4 4 5 7]
>> plot(x,y,"o")
La recta de mejor ajuste que pasa por el centro de la “nube de puntos” tiene una ecuación de la forma:
\[y= b_0 + b_1 x\]
Llamando:
\[B=\left(\begin{array}{c} b_{0}\\ b_{1} \end{array}\right)\,\,\,\,\,\,\,\,\,X=\left(\begin{array}{cc} 1 & x_{1}\\ 1 & x_{2}\\ 1 & x_{3}\\ \vdots & \vdots\\ 1 & x_{n} \end{array}\right)\,\,\,\,\,\,\,\,\,Y=\left(\begin{array}{c} y_{1}\\ y_{2}\\ y_{3}\\ \vdots\\ y_{n} \end{array}\right)\]
donde \(\left(x_1,x_2,x_3,\dots,x_n\right)\) e \(\left(y_1,y_2,y_3,\dots,y_n\right)\) son, respectivamente, los valores observados de \(x\) y de \(y\), se puede demostrar que:
\[B=(X^tX)^{-1}X^tY\]
Calcular los valores de \(b_0\) y \(b_1\) para la recta que mejor se ajusta a la nube de puntos anterior y dibujar la recta sobre la nube de puntos.