c = 5;
% Preallocate matrix, fill it with zeros
a = zeros(c, c);
for m = 1 : c
for n = 1 : c
a(m, n) = 1/(m + n * 5);
end
end
a
0.0909
0.0833
0.0769
0.0714
0.0667
0.0625
0.0588
0.0556
0.0526
0.0500
0.0476
0.0455
0.0435
0.0417
0.0400
0.0385
0.0370
0.0357
0.0345
0.0333
Mayo 2016
Indice
(2 7 4)
(5 8 3)
es almacenada en un vector columna formado por las columnas de la matriz (una columna
despus de otra).
(2)
(5)
(7)
(8)
(4)
(3)
Por lo tanto, estos elementos estn organizados en el vector columna que corresponde a la
matriz incrementando el primer ndice de la matriz, luego el segundo, luego el tercero (y los
siguientes si trabajramos con mas de 3 dimensiones).
A continuacin veamos cmo podemos mostrar los elementos de T en el orden en que es
almacenado. En primer lugar, asignemos un valor a T:
T=rand(4,2,3);
En el vector columna correspondiente, los elementos vienen dados en el orden en que son
almacenados por:
for p=1:3
for n=1:2
for m=1:4
disp(T(m,n,p));
end
end
end
T(3,1,2)
T(11)
Tan solo hay que escribir las siguientes lneas para ver que los elementos aparezcan en el
mismo orden como en las 3 bucles imbricadas precedentes.
for q=1:24
disp(T(q));
end
Para obtener ayuda acerca de estas funciones, en la ventana de MatLab escribe help
sub2indohelp ind2sub. Para obtener ayuda mas detallada, escribe doc sub2ind o doc
ind2sub.
En lugar de mostrar el uso de estas funciones en el caso general de una matriz
de N dimensiones, veremos un caso particular.
v=[3;8;17;23];
[m n p]=ind2sub([4 2 3],v);
T=rand(4,2,3);
v=[3;8;17;23];
[m n p]=ind2sub([4 2 3],v);
for q=1:4
disp([T(m(q),n(q),p(q)), T(v(q))]);
end
m=[2;1;4;3];
n=[2;2;1;1];
p=[1;3;2;3];
v=sub2ind([4 2 3],m,n,p);
T=rand(4,2,3);
m=[2;1;4;3];
n=[2;2;1;1];
p=[1;3;2;3];
v=sub2ind([4 2 3],m,n,p);
for q=1:4
disp([T(v(q)), T(m(q),n(q),p(q))]);
end
M=reshape(T,[6 4]);
Cabe mencionar que fcilmente podemos obtener la matriz inicial T con la ayuda
de Mredimensionndola adecuadamente:
TT=reshape(M,[4 2 3]);
For a number of inputs you only need a manifold where to store them, the rigorous way is to use cells :
>>N=10;
>>B=cell(N,1);
>>for n=1:N
fprintf(' Entre matrix %d\n',n);
B{n}=input('');
end
Entrada/salida
MATLAB imprime los resultados de los clculos y los guarda bien en una
variable o en ans, si no se especifica. En muchos casos esto es suficiente, pero
en programas ms largos es necesario identificar o describir el resultado de un
determinado clculo. MATLAB dispone de una funcin fprintf muy verstil
para mostrar distintos datos con formato, alternativamente se puede utilizar la
funcin disp.
La funcin disp
2.5000
3.0000
La funcin disp imprime una matriz A, vamos a ver ahora como imprime una
tabla de valores (abscisa, ordenada). Creamos el script prueba.
22
43
70
La funcin fprintf
0, aade ceros
i, indica entero
g, formato corto
El carcter \n al final del texto en la funcin fprintf indica una nueva lnea,
probar el efecto al quitarlo. Las variables que guardan los datos v0, ang y x se
ponen al final en el mismo orden que se citan en el texto separadas por comas.
Se sugiere al lector que pruebe otros formatos
Corremos el script en la ventana de comandos
>> prueba
velocidad 46.3250 m/s, ngulo de tiro 32, alcance 196.82 m
La funcin sprintf
plot(Vr,Pr,'r')
text(1,1.35,sprintf('presin %1.3f',p))
Matrices
Una matriz A de m filas y n columnas o de
dimensin mn se representa por
A=a11a21...am1a12a22...am2............a1na2n...amn
A=[a11a12...a1na21a22...a2n............am1am2...amn]
>> A=[1 2 3
4 5 6];
>> A=[1 2 3; 4 5 6]
A =
1
2
3
4
5
6
>> A(2,2) %accede al elemento situado en la fila 2
columna 2
ans = 5
>> size(A) %dimensiones de la matriz A (2 filas, 3
columnas)
ans = 2
3
>> B=A' % B es la matriz traspuesta de A
B =
1
4
2
5
3
6
>> size(B)
ans =
3
2
>> A=[1,2;3,4];
>> B=repmat(A,3,2)
B =
1
2
1
3
4
3
1
2
1
3
4
3
1
2
1
3
4
3
2
4
2
4
2
4
0
0
3
Matrices predefinidas
La funcin zeros(m,n) crea una matriz de
dimensin mn cuyos elementos son todos ceros
La funcin ones(m,n) crea una matriz de
dimensin mn cuyos elementos son todos unos
La funcin eye(n) crea una matriz cuadrada de
dimensin nn en la cual, los elementos de la diagonal
son unos y el resto de los elementos son ceros, es decir,
crea la matriz identidad de dimensin n.
Por ejemplo, zeros(n) reserva espacio para una matriz
cuadrada de dimensin nn.Lo mismo ocurre con ones(n)
>> y=zeros(3)
y =
0
0
0
0
0
0
>> y=zeros(3,1)
y =
0
0
0
>> eye(3)
ans =
1
0
0
1
0
0
0
0
0
0
1
>> A=[1,2,3,4;5,6,7,8;9,10,11,12];
>> A([1,2],3)
ans =
3
7
>> A(2,[2,3,4])
ans =
6
7
8
>> A([2,3],2:4)
ans =
6
7
8
10
11
12
3
7
11
4
8
12
>> A(4,:)=13:16
A =
1
2
3
5
6
7
9
10
11
13
14
15
4
8
12
16
1
-2
2
7
3
22
4
43
5
70
>> size(tabla) %matriz de 6 filas y 2 columnas
ans =
6
2
>> max(tabla(:,2))
ans =
70
>> min(tabla(:,2))
ans =
-5
>> sum(tabla(:,2))
ans =
135
(a21b12+a22b22+a23b32)]A=[a11a12a13a21a22a23]
B=[b11b12b21b22b31b32]A*B=[(a11b11+a12b21+a13b31)
(a11b12+a12b22+a13b32)(a21b11+a22b21+a23b31)
(a21b12+a22b22+a23b32)]
>> A=[1 2 3;4 5 6]
A =
1
2
3
4
5
6
>> B=[1 2; 3 4; 5 6]
B =
1
2
3
4
5
6
>> A*B
ans =
22
28
49
64
a13)n(a23)n(a33)nA=[a11a12a13a21a22a23a31a32a33]
B=[b11b12b13b21b22b23b31b32b33]A.*B=[a11b11a12b12a13b
13a21b21a22b22a23b23a31b31a32b32a33b33]A./B=[a11/b11a1
2/b12a13/b13a21/b21a22/b22a23/b23a31/b31a32/b32a33/b33]A.
^n=[(a11)n(a12)n(a13)n(a21)n(a22)n(a23)n(a31)n(a32)n(a33)n]
>> A=[1,2,-4;7,0,5];
>> B=[-6,12,-5;-2,16,15];
>> A.*B
ans =
-6
24
20
-14
0
75
>> A.^2
ans =
1
4
16
49
0
25
>> A./B
ans =
-0.1667
0.1667
0.8000
-3.5000
0
0.3333