Guía de Matlab

Tabla de contenido

Características del lenguaje

Tipos de datos

Entero (int): 3, 6 10,-1.
Float: 3.141691
Double: 3.1416914578951346
Cadena: 'Esto es una cadena', "Esto tambien", '3', "3.141691"
Booleano: True(1), False(0)
Lógicos: and(&&), or (||) igual(==) y negación(~)

Estructura de datos en Matlab

Matrices y vectores
Estructuras
CellArrays
Tablas
Strings

Primeras nociones de Matlab

Matlab considera diferente las minusculas y las mayusculas en la declaración de sus variables.
A=3
A = 3
a=3
a = 3
Si no queremos que aparezca el resultado en la linea de comandos tenemos que agregar ; despues de cada sentencia.
p=2.2734;
p
p = 2.2734
suma=A+a;
Suma2=A+a
Suma2 = 6
Podemos escribirn en una misma linea siempre y cuando pongamos el ; entre las sentencias
%A=3 c=2 %incorrecto
A=3; c=2 %correcto
c = 2
A=3; c=2; %correcto
Borrar las variables del workspace y limpiar la linea de comandos
clear all % Borra todo
clc % Borra todo en la línea de comandos

Matrices y vectores

Creación

En Matlab la forma de crear una vector o una matriz son mediante los corchetes ([]) y se realizá de la siguiente manera :
%1) Para un vector horizontal
v1=[3 7 0 8 1]
v1 = 1×5
3 7 0 8 1
%2) Para un vector vertical
v2=[3;7;0;8;1]
v2 = 5×1
3 7 0 8 1
%3) Para un vector secuancial
v3=1:100
v3 = 1×100
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
%4) Para un vector secuencial de numeros pares del 2 al 100
v4=2:2:100
v4 = 1×50
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100
%5) Para un vector secuencial de numeros impares del 1 al 99
v5=1:2:100
v5 = 1×50
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
%6) Para una matriz de 3x2
M1=[3 9;4 7;1 0]
M1 = 3×2
3 9 4 7 1 0
%7) Para una matriz cuadrada de 4x4
M2=[2 4 2 0;14 17 3 7;1 7 34 6;8 0 -23 -3]
M2 = 4×4
2 4 2 0 14 17 3 7 1 7 34 6 8 0 -23 -3
%8)Para una matriz con vectores secuenciales
M3=[1:3;4:6;8:10]
M3 = 3×3
1 2 3 4 5 6 8 9 10
%9) Creación de matrices diversas
A=[3 9 5; 4 7 2;1 0 4]
A = 3×3
3 9 5 4 7 2 1 0 4
B=[8 -2 7;1 9,5;-2 1 0]
B = 3×3
8 -2 7 1 9 5 -2 1 0
C=[2 3; 8 9;1 1]
C = 3×2
2 3 8 9 1 1
v=1:5
v = 1×5
1 2 3 4 5

Manejo de Matrices

En el manejo de matrices nos referimos a como manipularla de tal manera que podamos obtener valores o submatrices de una matriz dada.
%Tamaño de una matriz
[Numfilas1, NumColumnas1]=size(A)
Numfilas1 = 3
NumColumnas1 = 3
Numfilas2=size(A,1)
Numfilas2 = 3
NumColumnas2=size(A,2)
NumColumnas2 = 3
%Tamaño de un vector ya sea horizontal o vertical
Numvec=length(v)
Numvec = 5
%La longitud del vector vacio es 0
NumVacio=length([])
NumVacio = 0
% Como acceder a los elementos de una matriz
%Para acceder a algun elemento de la matriz es necesario especificar su
%fila y columna donde esta ubicado, donde el primer argumento del
%parentesis se refiere a las filas y el segundo se refiere a las columnas)
elemento1= A(3,2)
elemento1 = 0
elemento2= B(2,3)
elemento2 = 5
elemento3= C(1,1)
elemento3 = 2
elemento4= v(3)
elemento4 = 3
%elemento5= A(4,2); %Hay problema porque la matriz es de 3 x 3
%Obtener toda una fila o columna de una matriz (para obtener toda una fila
%o columna es necesario los dos puntos(:))
%Obtengamos toda la fila 2 de A
f1= A(2,:)
f1 = 1×3
4 7 2
%Obtengamos toda la columa 2 de A
c1=A(:,2)
c1 = 3×1
9 7 0
%Submatriz de una matriz
%Colocamos los valores de lo que seran las filas y las columnas de la submatriz
submatriz1= A(1:2,1:2) %Realizarlo por una secuencia
submatriz1 = 2×2
3 9 4 7
submatriz2=A([1,3],[1,3]) %Escribir de manera puntual las filas y columnas
submatriz2 = 2×2
3 5 1 4
submatriz3= B(2:3,2)
submatriz3 = 2×1
9 1
%Cambiar elementos de una matriz o un vector
%Para cambiar los valores de una matriz o un vector solo tienes que
%acceder a el por medio de las filas y columnas y asignarle el nuevo
%valor, este puede ser un solo valor, toda una fila, toda una columna o una
%submatriz
A(3,2)=0 % Cambia un valor
A = 3×3
3 9 5 4 7 2 1 0 4
A(3,:)=1:3 % Cambia una columna
A = 3×3
3 9 5 4 7 2 1 2 3
A(:,3)=4:6 % Cambia una fila
A = 3×3
3 9 4 4 7 5 1 2 6
B(1:2,1:2)= C(1:2,1:2) %Cambia una submatriz
B = 3×3
2 3 7 8 9 5 -2 1 0
C(4,4)=-1 % A pesar de que el tamaño de la matriz es de 3 x 3 le asigna ese valor a la matriz y todo lo demas lo rellena con cero
C = 4×4
2 3 0 0 8 9 0 0 1 1 0 0 0 0 0 -1

Operaciones Matriciales

Las operaciones matriciales son el conjunto de operaciones que se pueden realizar a las matrices cumpliendo ciertas condiciones.
% Suma
% Para la suma es importante que las dos matrices a sumar sean del mismo tamaño
Suma1= A+B %No hay problema
Suma1 = 3×3
5 12 11 12 16 10 -1 3 6
%Suma2= A+M1; %Hay problema porque no coinciden los tamaños de las matrices
Suma3= B+A %No hay problema con sumar las matrices
Suma3 = 3×3
5 12 11 12 16 10 -1 3 6
% Resta
%Para la suma es importante que las dos matrices a sumar sean del mismo tamaño
Resta1= A-B %No hay problema
Resta1 = 3×3
1 6 -3 -4 -2 0 3 1 6
%Resta2= A-M1; %Hay problema porque no coinciden los tamaños de las matrices
Resta3= B-A %No hay problema pero no es lo mismo que A-B sino su negativo
Resta3 = 3×3
-1 -6 3 4 2 0 -3 -1 -6
%Multiplicación por un escalar
%Es la multiplicación punto a punto(valor a valor) de una cantidad a todos
%los valores de la matriz
Escalar1= 2*A
Escalar1 = 3×3
6 18 8 8 14 10 2 4 12
Escalar2= (1/2)*C
Escalar2 = 4×4
1.0000 1.5000 0 0 4.0000 4.5000 0 0 0.5000 0.5000 0 0 0 0 0 -0.5000
Escalar3= -1*v
Escalar3 = 1×5
-1 -2 -3 -4 -5
Escalar4= 0.3*B
Escalar4 = 3×3
0.6000 0.9000 2.1000 2.4000 2.7000 1.5000 -0.6000 0.3000 0
%Multiplicacion Puntual
%Es la multiplicación que se hace uno por uno (muy diferente a la
%matricial) y es necesario que las matrices tengan los mismo tamaños
MulPun1=A.*B %No hay problema
MulPun1 = 3×3
6 27 28 32 63 25 -2 2 0
MulPun2=B.*A %Es lo mismo que A.*B
MulPun2 = 3×3
6 27 28 32 63 25 -2 2 0
%MulPun3=A.*M1; %Hay problema porque los tamaños de las matrices no coinciden
%División puntual
% Divide elemento a elemento cada valor de las matrices o vectores
DP1=A./B
DP1 = 3×3
1.5000 3.0000 0.5714 0.5000 0.7778 1.0000 -0.5000 2.0000 Inf
DP2=B./A
DP2 = 3×3
0.6667 0.3333 1.7500 2.0000 1.2857 1.0000 -2.0000 0.5000 0
DP3=v1./v2 % ¿Y aquí que sucede?
DP3 = 5×5
1.0000 2.3333 0 2.6667 0.3333 0.4286 1.0000 0 1.1429 0.1429 Inf Inf NaN Inf Inf 0.3750 0.8750 0 1.0000 0.1250 3.0000 7.0000 0 8.0000 1.0000
%La transpuesta de una matriz
%La transpuesta de una matriz es aquella matriz que cambia sus filas por
%columnas y sus columnas por filas.
Trans1=A'
Trans1 = 3×3
3 4 1 9 7 2 4 5 6
Trans2=B'
Trans2 = 3×3
2 8 -2 3 9 1 7 5 0
Trans3=C'
Trans3 = 4×4
2 8 1 0 3 9 1 0 0 0 0 0 0 0 0 -1
Trans4=v'
Trans4 = 5×1
1 2 3 4 5
%Multiplicación matricial
%Es la multiplicación de dos matrices que cumplen que el numero de columnas
%de la primera es igual al número de filas de la segunda y da como
%resultado una matriz con el mismo numero de filas de la primera matriz por
%el mismo numero de columnas de la segunda matriz.
Multi1=A*B %No hay problema
Multi1 = 3×3
70 94 66 54 80 63 6 27 17
Multi2=A*M1 %No hay problema
Multi2 = 3×2
49 90 45 85 17 23
%Multi3=C*v; %Si hay problema no coinciden el numero de columnas de C con el numero de filas de v
Multi4=v*v' %No hay problema
Multi4 = 55
%Potencia matricial de una matriz
PM1=A^2
PM1 = 3×3
49 98 81 45 95 81 17 35 50
PM2=A^3
PM2 = 3×3
620 1289 1172 596 1232 1141 241 498 543
%Potencia puntual de una matriz
PP1=A.^2
PP1 = 3×3
9 81 16 16 49 25 1 4 36
PP2=A.^3
PP2 = 3×3
27 729 64 64 343 125 1 8 216
%Inversa de una matriz
%La inversa de una matriz es aquella matriz que cumple que A*Ainv=I es
%decir es buscar una matriz que al multiplicarse por ella nos da la
%identidad, por lo tanto la matriz debe ser cuadrada
Inv1=inv(A) %NO hay problema
Inv1 = 3×3
-0.4507 0.6479 -0.2394 0.2676 -0.1972 -0.0141 -0.0141 -0.0423 0.2113
Inv2=inv(B) %No hay problema
Inv2 = 3×3
-0.0352 0.0493 -0.3380 -0.0704 0.0986 0.3239 0.1831 -0.0563 -0.0423
%Inv3=inv(C); %Si hay problema porque no es cuadrada
%Inv4=inv(v); %Si hay problema porque es un vector
%Agreguemos una matriz mas
D=[1 2 3; 2 4 6; 10 4 3];
inv5=inv(D); %No es posible porque existe una combinación lineal en sus filas
Warning: Matrix is singular to working precision.
%Determinante de una matriz
% Para que una matriz tenga determinante tiene que ser cuadrada
det(A)
ans = -71
det(B)
ans = 142
%det(M1) % No es posible porque no es cuadrada la matriz
%det(v) % No esposible el determinante de un vector

Operaciones con matrices

Son las formas de obtener un determinado valor o la busqueda de algún valor, asi como ampliar o reducir una matriz.
% Máximos y mínimos de valores por columna
maximos1= max(A)
maximos1 = 1×3
4 9 6
minimos1= min(A)
minimos1 = 1×3
1 2 4
[maximos2, posicion1]=max(A)
maximos2 = 1×3
4 9 6
posicion1 = 1×3
2 1 3
[minimos2, posicion2]=min(A)
minimos2 = 1×3
1 2 4
posicion2 = 1×3
3 3 1
% Máximos y mínimos de valores por fila
maximos3= max(A')
maximos3 = 1×3
9 7 6
minimos3= min(A')
minimos3 = 1×3
3 4 1
[maximos3, posicion3]=max(A')
maximos3 = 1×3
9 7 6
posicion3 = 1×3
2 2 3
[minimos3, posicion4]=min(A')
minimos3 = 1×3
3 4 1
posicion4 = 1×3
1 1 1
% Máximos y minimos totales
MaxTotal=max(maximos1)
MaxTotal = 9
MinTotal=min(minimos1)
MinTotal = 1
% Ordenamiento por columna
S1=sort(A) %Ordena de manera ascendente
S1 = 3×3
1 2 4 3 7 5 4 9 6
S2=sort(A,'descend') %ordena de manera descendiente
S2 = 3×3
4 9 6 3 7 5 1 2 4
S3=sort(C)
S3 = 4×4
0 0 0 -1 1 1 0 0 2 3 0 0 8 9 0 0
S4=sort(v)
S4 = 1×5
1 2 3 4 5
% Ordenamiento por fila
S5=sort(A,2) %Ordena de manera ascendente
S5 = 3×3
3 4 9 4 5 7 1 2 6
S6=sort(A,2,'descend')' %Ordena de manera descendiente
S6 = 3×3
9 7 6 4 5 2 3 4 1
S7=sort(C')' %Otra forma
S7 = 4×4
0 0 2 3 0 0 8 9 0 0 1 1 -1 0 0 0
S8=sort(v')'; %Para un vector es lo mismo si es por fila o por
%columna
%Encontrar valores
%Para encontrar valores dentro de una matriz se requiere de una condicional
%y te devuelve las posiciones
Posc= find(A==0) %la posicion de la matriz en donde es cero recorriendo por columnas
Posc = 0×1 empty double column vector
[Posfila1, Poscolumna1]= find(A==0) % Te da la ubicación de en filas y
Posfila1 = 0×1 empty double column vector Poscolumna1 = 0×1 empty double column vector
% de la condicion a buscar
[Posfila2, Poscolumna2]= find(A>3 & A<7) % te da los valores entre 3 y 7
Posfila2 = 4×1
2 1 2 3
Poscolumna2 = 4×1
1 3 3 3
%Si lo que requeires es saber cuales son esos valores entonces lo colocas
%dentro de la matriz
val1= A(A>3 & A<7)
val1 = 4×1
4 4 5 6
val2= A(A==3 | A==4) %valores de la matriz que sean 3 o 4
val2 = 3×1
3 4 4
% Borrar elementos de una matriz
%Borrar elementos en una matriz no es posible porque esto haria que la
%matriz no quede en el formato adecuado ya que por definición una matriz no
%puede tener valores en blanco (ojo: valores en blanco no son valores NA)
%por lo tanto no se puede ya que marcaria error el Matlab
%Borrar toda una fila o toda una columna
%Para borrar toda una fila o una columan en una matriz se utiliza los []
E=A %Asigna la misma matriz A a E para no perder A
E = 3×3
3 9 4 4 7 5 1 2 6
E(:,2)=[] %Borrar la columna 2
E = 3×2
3 4 4 5 1 6
E(1,:)=[] %Borra la fila 1
E = 2×2
4 5 1 6
%Unir Matrices
%Para concatenar matrices se hace igual que como creamos una matriz
%Concatenacion por columna es posible cuando coinciden los tamaños de las
%filas de ambas matrices
F=[A,B]
F = 3×6
3 9 4 2 3 7 4 7 5 8 9 5 1 2 6 -2 1 0
%Concatenacion por filas es posible cuando coinciden los tamaños de las
%columnas de ambas matrices
G=[A;B]
G = 6×3
3 9 4 4 7 5 1 2 6 2 3 7 8 9 5 -2 1 0

Matrices predefinidas en Matlab

Son matrices que maneja Matlab y no es necesario crearlo o leerlo, son matrices comunes.
%Matriz identidad
%Es la matriz que tiene unos en la diagonal y es cuadrada
I1=eye(3) %Matriz identidad de 3x3
I1 = 3×3
1 0 0 0 1 0 0 0 1
I2=eye(4) %Matriz identidad de 4x4
I2 = 4×4
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
%Matriz de cero
%Es la matriz que tiene todos sus valores iguales a cero y puede ser
%cuadrada o no
Cero1=zeros(2,3) %Matriz de 2x3
Cero1 = 2×3
0 0 0 0 0 0
Cero2=zeros(1,4) %Vector horizontal
Cero2 = 1×4
0 0 0 0
Cero3=zeros(4,1) %Vector vertical
Cero3 = 4×1
0 0 0 0
Cero5=zeros(3) %Matriz cuadrada de 3x3
Cero5 = 3×3
0 0 0 0 0 0 0 0 0
%Matriz de unos
%Es una matriz que tiene todos sus valores iguales a 1 y no importa si es
%cuadrada o no
Unos1=ones(2,3) %Matriz de 2x3
Unos1 = 2×3
1 1 1 1 1 1
Unos2=ones(1,4) %Vector horizontal
Unos2 = 1×4
1 1 1 1
Unos3=ones(4,1) %Vector vertical
Unos3 = 4×1
1 1 1 1
Unos4=ones(3) %Matriz cuadrada de 3x3
Unos4 = 3×3
1 1 1 1 1 1 1 1 1
%Matriz diagonal
%Es la matriz que tiene valores solo en la diagonal principal, la matriz
%es cuadrada
Diag1=diag(v)
Diag1 = 5×5
1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 5
Diag2=diag([1 3])
Diag2 = 2×2
1 0 0 3
%Si lo que recibe la función es una matriz entonces la funación devuelve
%los elementos de la diagonal
Diag3=diag([1 3 0; 2 9 3; 0 1 0])
Diag3 = 3×1
1 9 0
Diag4=diag([]) %La diagonal del conjunto vacio es vacio
Diag4 = []

Convertir una matriz a vector

Para convertir una matriz en vector puede ser solamente poniendo los dos puntos y lo convierte a un vector recorriendo los valores por columna
Avectorver=A(:) %vector vertical
Avectorver = 9×1
3 4 1 9 7 2 4 5 6
Avectorhor=A(:)' %vector horizontal
Avectorhor = 1×9
3 4 1 9 7 2 4 5 6
Bvectorver=B(:)
Bvectorver = 9×1
2 8 -2 3 9 1 7 5 0

Funciones matematicas con matrices

Se refiere a las distintas funciones matematicas que le podemos realizar a un número, a una matriz o a un vector.
Algunas funciones son:
Trigonometricas: sin(x), cos(x), tan(x), csc(x), cot(x), sec(x)
Logaritmicas: log(x), log10(x), log2(x)
Exponenciales: exp(x), srqt(x)
sin(A)
ans = 3×3
0.1411 0.4121 -0.7568 -0.7568 0.6570 -0.9589 0.8415 0.9093 -0.2794
cos(A)
ans = 3×3
-0.9900 -0.9111 -0.6536 -0.6536 0.7539 0.2837 0.5403 -0.4161 0.9602
tan(A)
ans = 3×3
-0.1425 -0.4523 1.1578 1.1578 0.8714 -3.3805 1.5574 -2.1850 -0.2910
log(A)
ans = 3×3
1.0986 2.1972 1.3863 1.3863 1.9459 1.6094 0 0.6931 1.7918
A^3
ans = 3×3
620 1289 1172 596 1232 1141 241 498 543
log2(v1)
ans = 1×5
1.5850 2.8074 -Inf 3.0000 0
sqrt(A)
ans = 3×3
1.7321 3.0000 2.0000 2.0000 2.6458 2.2361 1.0000 1.4142 2.4495
exp(v1)
ans = 1×5
1.0e+03 * 0.0201 1.0966 0.0010 2.9810 0.0027

Comunicación con el usuario

Funciones donde podemos interactuar con el usuario al momento de programar en Matlab
%Pedir una matriz
Matriz=input('Escribe una matriz: ')
Matriz = 2×2
2 5 2 10
% Pedir un dato númerico
Edad=input('Escribe tu edad: ')
Edad = 40
%Pedir una cadena
Nombre= input('Escribe tu nombre: ','s')
Nombre = 'Eduardo'
% Desplejar un mensaje de Error
%error('Matriz incorrecta');
%Mezclar numero y cadenas previamente leidas
fprintf('%s tiene %d años de edad\n',Nombre,Edad)
Eduardo tiene 40 años de edad
%Desplegar un mensaje
disp('Terminado')
Terminado

Estructura Struct

%Forma 1 de crear una estructura
Alumnos.Nombre='Pedro Castellanos'
Alumnos = struct with fields:
Nombre: 'Pedro Castellanos'
Alumnos.Direccion='Calle 20 #205 x 10 y 12 Sisal Yucatán, México'
Alumnos = struct with fields:
Nombre: 'Pedro Castellanos' Direccion: 'Calle 20 #205 x 10 y 12 Sisal Yucatán, México'
Alumnos.Notas=[60 80 90]
Alumnos = struct with fields:
Nombre: 'Pedro Castellanos' Direccion: 'Calle 20 #205 x 10 y 12 Sisal Yucatán, México' Notas: [60 80 90]
Alumnos.Edad=25
Alumnos = struct with fields:
Nombre: 'Pedro Castellanos' Direccion: 'Calle 20 #205 x 10 y 12 Sisal Yucatán, México' Notas: [60 80 90] Edad: 25
Alumnos.Semestre=[60 70 85;70 95 100]
Alumnos = struct with fields:
Nombre: 'Pedro Castellanos' Direccion: 'Calle 20 #205 x 10 y 12 Sisal Yucatán, México' Notas: [60 80 90] Edad: 25 Semestre: [2×3 double]
Alumnos.Profesores.Cantidad=3
Alumnos = struct with fields:
Nombre: 'Pedro Castellanos' Direccion: 'Calle 20 #205 x 10 y 12 Sisal Yucatán, México' Notas: [60 80 90] Edad: 25 Semestre: [2×3 double] Profesores: [1×1 struct]
%Forma 2 de crear una estructura
Alumnos2=struct('Nombre','Pedro','Direccion','Conocido','Notas',[60 80 90],'Edad',25,'Semestre',[60 70 85;70 95 100])
Alumnos2 = struct with fields:
Nombre: 'Pedro' Direccion: 'Conocido' Notas: [60 80 90] Edad: 25 Semestre: [2×3 double]
%Otra forma es crear una estructura vacia
Alumnos3=struct()
Alumnos3 = struct with no fields.
%Agregar
Alumnos(2).Nombre='Jose Puerto'
Alumnos = 1×2 struct array with fields:
Nombre Direccion Notas Edad Semestre Profesores
Alumnos(2).Direccion='Calle 20 #205 x 10 y 12 Sisal Yucatán, México'
Alumnos = 1×2 struct array with fields:
Nombre Direccion Notas Edad Semestre Profesores
Alumnos(2).Notas=[60 80]
Alumnos = 1×2 struct array with fields:
Nombre Direccion Notas Edad Semestre Profesores
Alumnos(2).Edad=25
Alumnos = 1×2 struct array with fields:
Nombre Direccion Notas Edad Semestre Profesores
Alumnos(2).Semestre=[60 70 85;70 95 100]
Alumnos = 1×2 struct array with fields:
Nombre Direccion Notas Edad Semestre Profesores
Alumnos(2).Profesores.Cantidad=3
Alumnos = 1×2 struct array with fields:
Nombre Direccion Notas Edad Semestre Profesores
Alumnos3(1).Nombre='Kenia Manzanilla'
Alumnos3 = struct with fields:
Nombre: 'Kenia Manzanilla'
Alumnos3(1).Direccion='Calle 20 #205 x 10 y 12 Sisal Yucatán, México'
Alumnos3 = struct with fields:
Nombre: 'Kenia Manzanilla' Direccion: 'Calle 20 #205 x 10 y 12 Sisal Yucatán, México'
Alumnos3(1).Notas=[60 80 100]
Alumnos3 = struct with fields:
Nombre: 'Kenia Manzanilla' Direccion: 'Calle 20 #205 x 10 y 12 Sisal Yucatán, México' Notas: [60 80 100]
Alumnos3(1).Edad=25
Alumnos3 = struct with fields:
Nombre: 'Kenia Manzanilla' Direccion: 'Calle 20 #205 x 10 y 12 Sisal Yucatán, México' Notas: [60 80 100] Edad: 25
Alumnos3(1).Semestre=[60 70 85;70 95 100]
Alumnos3 = struct with fields:
Nombre: 'Kenia Manzanilla' Direccion: 'Calle 20 #205 x 10 y 12 Sisal Yucatán, México' Notas: [60 80 100] Edad: 25 Semestre: [2×3 double]
Alumnos3(1).Profesores.Cantidad=3
Alumnos3 = struct with fields:
Nombre: 'Kenia Manzanilla' Direccion: 'Calle 20 #205 x 10 y 12 Sisal Yucatán, México' Notas: [60 80 100] Edad: 25 Semestre: [2×3 double] Profesores: [1×1 struct]
Alumnos
Alumnos = 1×2 struct array with fields:
Nombre Direccion Notas Edad Semestre Profesores
%Acceder a los elementos de una estructura
Alumnos.Nombre %Acceder a todos los elementos de la variable de la estructura sino pongo el valor
ans = 'Pedro Castellanos'
ans = 'Jose Puerto'
Alumnos(2).Nombre %Acceder directamente al valor de la variable
ans = 'Jose Puerto'
Alumnos(2).Semestre(:,3) %Acceder a los elementos de una matriz o de un vector utilizando lo que conocemos de dicha estructura
ans = 2×1
85 100
Apellido=Alumnos(2).Nombre(6:end) %Buscamos el apellido
Apellido = 'Puerto'
%Concatenar resultados de struct
%Calif=cat(1,Alumnos.Notas) %Concatenar por filas (Número 1 de la
%función cat) en este caso no se puede porque quedaria una matriz con
%valores vacios o nulos.
CalifVec=cat(2,Alumnos.Notas) %Concatena por columnas (Número 2 de la funcion cat)
CalifVec = 1×5
60 80 90 60 80
mean(CalifVec)
ans = 74

Estructura CellArray

% Forma de crear un cellarray
A=magic(5);
B=magic(3);
c=1:10
c = 1×10
1 2 3 4 5 6 7 8 9 10
d=(1:2:10)';
cad1='Temperatura';
cad2='Presion';
%Creamos un cellarray
%Primera forma
CellDatos={cad1 cad2; A B; c d}
CellDatos = 3×2 cell array
{'Temperatura' } {'Presion' } {5×5 double } {3×3 double} {[1 2 3 4 5 6 7 8 9 10]} {5×1 double}
%Para que se cumpla la forma matricial debemos agregar una matriz vacia o
%nan
CellDatos3={cad1 cad2;A B;[] d}
CellDatos3 = 3×2 cell array
{'Temperatura'} {'Presion' } {5×5 double } {3×3 double} {0×0 double } {5×1 double}
%Otra forma
CellDatos2=cell(3,2)
CellDatos2 = 3×2 cell array
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
CellDatos2{1,1}=cad1;
cellDatos2{1,2}=cad2;
cellDatos2{2,1}=A;
cellDatos2{2,2}=B;
cellDatos2{3,1}=c;
cellDatos2{3,2}=d;
% Acceder a los elementos de un cellarray es mediante el simbolo {}
Variable1=CellDatos{1,1};
matriz=CellDatos{2,2}(3,:); %Acceder directamente a los datos de la matriz utilizando los parentesis y lo viste en matrices
vector=CellDatos{3,1}(4:7);
%Forma grafica de ver un cellarray
cellplot(CellDatos)

Cadenas (char)

%Una cadena es considerada en matlab como un vector horizontal
cadena='Esto es una cadena';
cadena2="esto es una cadena"
cadena2 = "esto es una cadena"
cadena3='34'
cadena3 = '34'
longitud=length(cadena)
longitud = 18
%Accedemos a cada elemento de la cadena por sus indices como si fuera un
%vector
cadena(4:end)
ans = 'o es una cadena'
cadena(4:longitud)
ans = 'o es una cadena'
%Buscar
posionesblanco=strfind(cadena,' ') % Busca los espacios en blanco y devuelve un vector
posionesblanco = 1×3
5 8 12
posioneses=strfind(cadena,'estaba') %Lo que devuelve cuando no encuentra nada es un vacio
posioneses = []
isempty(posioneses) % Esta es la forma lógica de determinar si es vacio
ans = logical
1
% Comparaciones
strcmp(cadena, cadena2) % Devuelve un valor donde 0 es falso y 1 es verdadero considerando las mayusculas y minusculas
ans = logical
0
strcmpi(cadena, cadena2) % NO importa las mayusculas y minusculas porque los considera igual.
ans = logical
1
% Concatenación
cadena4=[cadena ' ' cadena3];
%split
split1=strsplit(cadena) %Separa la cadena por default en espacios en blanco y lo coloca en un cellarray
split1 = 1×4 cell array
{'Esto'} {'es'} {'una'} {'cadena'}
split2=strsplit(cadena,'es') %Separa con respecto a una cadena
split2 = 1×2 cell array
{'Esto '} {' una cadena'}
%Sustiuir o reeplazar
cadena4=replace(cadena2, 'esto', 'Esto')
cadena4 = "Esto es una cadena"
%Pasar de mayusculas a minusculas o al reves
cadena=lower(cadena);
cadenaMay=upper(cadena);
%erase
cad3='oh, oh esto es una gran sorpresa oh'
cad3 = 'oh, oh esto es una gran sorpresa oh'
cad4=erase(cad3,'oh');
cad5=erase(cad3,',');

Estructura String

%Creación de un string
Matrizcad=[cadena cadena2; cadena3 "Este es 20"]
Matrizcad = 2×2 string array
"esto es una cadena" "esto es una cadena" "34" "Este es 20"
%Otra forma de crea un string
Matrizcad2=[string(CellDatos{1,1}); string(CellDatos{1,2})];
%Buscar valores unicos
cad3=erase(cad3,',');
str1=string(cad3);
splitstr1=strsplit(str1);
unicos=unique(splitstr1);
%Accedemos como si fuera una matriz o vector
unicos(4)
ans = "oh"
unicos(1:4)
ans = 1×4 string array
"es" "esto" "gran" "oh"

Tablas

% Variables
Edad = [38;43;38;40;49];
Fumador = logical([1;0;1;0;1]);
Peso = [71;69;64;67;64];
Altura = [176;163;131;133;119];
PresionSanguinea = [124 93; 109 77; 125 83; 117 75; 122 80];
% Crear una tabla
% Primera forma
T1 = table(Edad, Fumador, Peso, Altura, PresionSanguinea)
T1 = 5×5 table
Edad Fumador Peso Altura PresionSanguinea ____ _______ ____ ______ ________________ 38 true 71 176 124 93 43 false 69 163 109 77 38 true 64 131 125 83 40 false 67 133 117 75 49 true 64 119 122 80
% Segunda forma
T2=table([38;43;38;40;49],logical([1;0;1;0;1]),[71;69;64;67;64],[176;163;131;133;119],[124 93; 109 77; 125 83; 117 75; 122 80],'VariableNames',{'Edad','Fumador','Altura','Peso','PresionSanguínea'}, 'RowNames',{'P1','P2','P3','P4','P5'})
T2 = 5×5 table
Edad Fumador Altura Peso PresionSanguínea ____ _______ ______ ____ ________________ P1 38 true 71 176 124 93 P2 43 false 69 163 109 77 P3 38 true 64 131 125 83 P4 40 false 67 133 117 75 P5 49 true 64 119 122 80
%Tercera forma
T3=table;
T3.Edad=Edad;
T3.Fumador=Fumador;
T3.Altura=Altura;
T3.Peso=Peso;
T3.PresionSanguinea=PresionSanguinea;
T3.Comentarios=["Paciente Obeso";"Paciente con presión alta";"Paciente diabetico";"Paciente con presion baja";"Paciente normal"];
T3
T3 = 5×6 table
Edad Fumador Altura Peso PresionSanguinea Comentarios ____ _______ ______ ____ ________________ ___________________________ 38 true 176 71 124 93 "Paciente Obeso" 43 false 163 69 109 77 "Paciente con presión alta" 38 true 131 64 125 83 "Paciente diabetico" 40 false 133 67 117 75 "Paciente con presion baja" 49 true 119 64 122 80 "Paciente normal"
%Propiedades de la tabla
T1.Properties.DimensionNames
ans = 1×2 cell array
{'Row'} {'Variables'}
%Acceso a los elementos de la tabla
T1.Row % Por filas
ans = 0×0 empty cell array
mean(T1.Altura) % Por columnas
ans = 144.4000
max(T1.PresionSanguinea)
ans = 1×2
125 93
MatrizTabla=T1.Variables % Totales como matriz ojo si tiene cadenas que pasa?
MatrizTabla = 5×6
38 1 71 176 124 93 43 0 69 163 109 77 38 1 64 131 125 83 40 0 67 133 117 75 49 1 64 119 122 80
T4=T1(2:4,2:4) %Devuelve una tabla
T4 = 3×3 table
Fumador Peso Altura _______ ____ ______ false 69 163 true 64 131 false 67 133
T5=T3(:,[1,3,4,5]) %Toma solo las columnas que quieres
T5 = 5×4 table
Edad Altura Peso PresionSanguinea ____ ______ ____ ________________ 38 176 71 124 93 43 163 69 109 77 38 131 64 125 83 40 133 67 117 75 49 119 64 122 80
MatrizT5=T5.Variables %Convierte a matriz
MatrizT5 = 5×5
38 176 71 124 93 43 163 69 109 77 38 131 64 125 83 40 133 67 117 75 49 119 64 122 80
%Cambiando el nombre de las dimensiones row y variables
T1.Properties.DimensionNames = {'Pacientes','Datos'};
T1.Properties
ans =
TableProperties with properties: Description: '' UserData: [] DimensionNames: {'Pacientes' 'Datos'} VariableNames: {'Edad' 'Fumador' 'Peso' 'Altura' 'PresionSanguinea'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowNames: {} CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
%Agregando nombre a las filas de una tabla
T1.Properties.RowNames = {'P1','P2','P3','P4','P5'};
%Colocar el apellido de los paciente como nombre de filas no como variable
%de columna
Apellidos=["Moreno";"Peniche";"Medina";"Ramirez";"Aragon"]
Apellidos = 5×1 string array
"Moreno" "Peniche" "Medina" "Ramirez" "Aragon"
T1.Properties.RowNames=Apellidos;
%Acceder por nombres de filas y columnas
T1('Ramirez',:) % Toda una fila
ans = 1×5 table
Edad Fumador Peso Altura PresionSanguinea ____ _______ ____ ______ ________________ Ramirez 40 false 67 133 117 75
T1('Ramirez','Altura') % Una fila y una columna
ans = table
Altura ______ Ramirez 133
T1('Ramirez',["Altura", "Peso"]) %Una fila y dos columnas
ans = 1×2 table
Altura Peso ______ ____ Ramirez 133 67
%Agregar una columna
% Forma 1 de los datos que tenemos agregamos el indice de masa corporal
T1.IMC=T1.Peso./(T1.Altura/100).^2
T1 = 5×6 table
Edad Fumador Peso Altura PresionSanguinea IMC ____ _______ ____ ______ ________________ ______ Moreno 38 true 71 176 124 93 22.921 Peniche 43 false 69 163 109 77 25.97 Medina 38 true 64 131 125 83 37.294 Ramirez 40 false 67 133 117 75 37.877 Aragon 49 true 64 119 122 80 45.195
%Otra forma
T1.Indice=(1:5)'
T1 = 5×7 table
Edad Fumador Peso Altura PresionSanguinea IMC Indice ____ _______ ____ ______ ________________ ______ ______ Moreno 38 true 71 176 124 93 22.921 1 Peniche 43 false 69 163 109 77 25.97 2 Medina 38 true 64 131 125 83 37.294 3 Ramirez 40 false 67 133 117 75 37.877 4 Aragon 49 true 64 119 122 80 45.195 5
T1.Apellido=Apellidos
T1 = 5×8 table
Edad Fumador Peso Altura PresionSanguinea IMC Indice Apellido ____ _______ ____ ______ ________________ ______ ______ _________ Moreno 38 true 71 176 124 93 22.921 1 "Moreno" Peniche 43 false 69 163 109 77 25.97 2 "Peniche" Medina 38 true 64 131 125 83 37.294 3 "Medina" Ramirez 40 false 67 133 117 75 37.877 4 "Ramirez" Aragon 49 true 64 119 122 80 45.195 5 "Aragon"
%Importante
T1(:,[1,6])=T1(:,[6,1])
T1 = 5×8 table
Edad Fumador Peso Altura PresionSanguinea IMC Indice Apellido ______ _______ ____ ______ ________________ ___ ______ _________ Moreno 22.921 true 71 176 124 93 38 1 "Moreno" Peniche 25.97 false 69 163 109 77 43 2 "Peniche" Medina 37.294 true 64 131 125 83 38 3 "Medina" Ramirez 37.877 false 67 133 117 75 40 4 "Ramirez" Aragon 45.195 true 64 119 122 80 49 5 "Aragon"
%Borrar una columna, es igual a como se realiza en una matriz
T1(:,6)=[] %Borrar por columnas
T1 = 5×7 table
Edad Fumador Peso Altura PresionSanguinea Indice Apellido ______ _______ ____ ______ ________________ ______ _________ Moreno 22.921 true 71 176 124 93 1 "Moreno" Peniche 25.97 false 69 163 109 77 2 "Peniche" Medina 37.294 true 64 131 125 83 3 "Medina" Ramirez 37.877 false 67 133 117 75 4 "Ramirez" Aragon 45.195 true 64 119 122 80 5 "Aragon"
T1(3,:)=[] %Borrar por filas
T1 = 4×7 table
Edad Fumador Peso Altura PresionSanguinea Indice Apellido ______ _______ ____ ______ ________________ ______ _________ Moreno 22.921 true 71 176 124 93 1 "Moreno" Peniche 25.97 false 69 163 109 77 2 "Peniche" Ramirez 37.877 false 67 133 117 75 4 "Ramirez" Aragon 45.195 true 64 119 122 80 5 "Aragon"
%Agregar valores en las filas a la tabla
T1(5,:)={50, true, 64, 120, [122 82], 214, 6}
T1 = 5×7 table
Edad Fumador Peso Altura PresionSanguinea Indice Apellido ______ _______ ____ ______ ________________ ______ _________ Moreno 22.921 true 71 176 124 93 1 "Moreno" Peniche 25.97 false 69 163 109 77 2 "Peniche" Ramirez 37.877 false 67 133 117 75 4 "Ramirez" Aragon 45.195 true 64 119 122 80 5 "Aragon" Row5 50 true 64 120 122 82 214 "6"
%Agregamos su apellido
T1.Properties.RowNames
ans = 5×1 cell array
{'Moreno' } {'Peniche'} {'Ramirez'} {'Aragon' } {'Row5' }
T1.Properties.RowNames{5,1}='Pacheco'
T1 = 5×7 table
Edad Fumador Peso Altura PresionSanguinea Indice Apellido ______ _______ ____ ______ ________________ ______ _________ Moreno 22.921 true 71 176 124 93 1 "Moreno" Peniche 25.97 false 69 163 109 77 2 "Peniche" Ramirez 37.877 false 67 133 117 75 4 "Ramirez" Aragon 45.195 true 64 119 122 80 5 "Aragon" Pacheco 50 true 64 120 122 82 214 "6"
%Agregamos descripción
T1.Properties.Description = 'Datos de pacientes incluyendo sus indice de masa corporal de acuerdo a su peso y estatura';
T1.Properties
ans =
TableProperties with properties: Description: 'Datos de pacientes incluyendo sus indice de masa corporal de acuerdo a su peso y estatura' UserData: [] DimensionNames: {'Pacientes' 'Datos'} VariableNames: {'Edad' 'Fumador' 'Peso' 'Altura' 'PresionSanguinea' 'Indice' 'Apellido'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowNames: {5×1 cell} CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.

Guardar y cargar archivos en Matlab

Guardar archivos

Para guardar una matriz o un vector en Matlab se puede hacer de las siguientes maneras
Archivos de Matlab (Es necesario que todos los parámetros de las funciones esten entre comillas simples
%Para todo el wordspace (no es necesario especificar el .mat)
save('Matrices')
%Para alguna(s) Matriz(ces) del workespace en especifico
save('MatricesEspecificas','M1','M2','v1','v2')
%Archivos de Texto (es necesario el -ascci y especificar la extensión .txt en el nombre
save('Matriz.txt','M1','-ascii')
%Archivos csv (Nota que aqui el nombre de la variable es sin comillas simples)
xlswrite('Matrizcsv.csv',M1)
Warning: Unable to write to Excel format, attempting to write file to CSV format.
xlswrite('Vectorcsv.csv',v1)
Warning: Unable to write to Excel format, attempting to write file to CSV format.
%Guardamos la matriz formateado por delimitador de tabulador
dlmwrite('DP.txt',DP1,'delimiter','\t','precision',5)

Cargar o leer archivos

Para cargar archivos es necesario que la fuente tenga aspecto de matriz esto es que no tenga espacios en blanco o carácteres de cadena o especiales
%Para archivos de Matlab (Ya sea todo el workspace o algunos especificos). Ve que aqui se cargan con el mismo nombre de las variables que fueron creadas
load('Matrices')
%Para archivos de texto (se asigna a una variable para darle un nombre de lo contrario te pone el nombre del archivo)
Matrix=load('Matriz.txt','-ascii')
Matrix = 3×2
3 9 4 7 1 0
%Para archivos Excel (Donde el 1 representa la hoja de excel a leer)
%En datos se tendrán los valores cargados o leidos y en encabezado estarán las cadenas de texto que representan esos valores.
[Datos1, encabezado]=xlsread('Archivos/Libro1.xlsx',1)
Datos1 = 4×4
1 5 8 4 2 6 9 7 3 7 3 9 4 8 2 0
encabezado = 1×4 cell array
{'Temperatura'} {'Presion'} {'Salinidad'} {'Altura'}
%Para archivos .csv
Datos2=importdata('Matrizcsv.csv')
Datos2 = 3×2
3 9 4 7 1 0
%Para archivos de texto o csv que tengan un encabezado en la(s) primera(s) lineas del archivo
Datos3=importdata('Matrizcsv.csv')
Datos3 = 3×2
3 9 4 7 1 0
%Para archivos que tengan cadenas de texto en una o varias columnas
[Datos4, colTexto]=xlsread('Archivos/experimental.xlsx',1) % En formato excel
Datos4 = 49×6
1.0000 60.0000 NaN 1.0000 3.5449 105.2504 1.0000 60.0000 NaN 1.0000 3.7263 110.6363 1.0000 60.0000 NaN 1.0000 3.5609 105.7233 2.0000 60.0000 NaN 2.0000 3.6335 107.8810 2.0000 60.0000 NaN 2.0000 3.5943 106.7161 2.0000 60.0000 NaN 2.0000 3.7176 110.3780 3.0000 60.0000 NaN 3.0000 3.6342 107.8998 3.0000 60.0000 NaN 3.0000 3.5783 106.2411 3.0000 60.0000 NaN 3.0000 3.4410 102.1637 4.0000 60.0000 NaN 1.0000 3.5129 104.2983
colTexto = 50×6 cell array
{'Replica'} {'Temperatura'} {'Acido'} {'Concentracion'} {'PorcCarbono'} {'PR' } {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'H3PO4'} {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'H3PO4'} {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'H3PO4'} {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'H3PO4'} {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'H3PO4'} {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'H3PO4'} {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'H3PO4'} {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'H3PO4'} {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'HCL' } {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'H3PO4'} {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'H3PO4'} {0×0 char } {0×0 char } {0×0 char} {0×0 char } {0×0 char } {'H3PO4'} {0×0 char } {0×0 char } {0×0 char}
Datos4=importdata('Archivos/predict.txt') % En formato txt
Datos4 = struct with fields:
data: [78×5 double] textdata: {79×6 cell}
%Guardamos la matriz formateado por delimitador de tabulador
dlmwrite('Prueba.txt',Datos1,'delimiter','\t','precision',5)

Gestión de archivos

Funciones que realicen el manejo y gestión de los archivos y directorios de Matlab
% Devuelve todos los directorios y archivos dentro del directorio activo
dir()
. CalculaArea.m Matrices.mat Prueba.txt .. DP.txt MatricesEspecificas.mat SumaVec.m .DS_Store Grafica1.png MatricesyVectores.m Vectorcsv.csv Archivos GuiaMatlab.html Matriz.txt experimental.xlsx BuscaCeros.m GuiaMatlab.mlx Matrizcsv.csv BuscaMayor.m Libro1.xlsx Numero_Potencia.m
% Devuelve los nombres de los directorios y archivos dentro del directorio
% activo limpios
ls()
Archivos Grafica1.png MatricesEspecificas.mat Prueba.txt BuscaCeros.m GuiaMatlab.html MatricesyVectores.m SumaVec.m BuscaMayor.m GuiaMatlab.mlx Matriz.txt Vectorcsv.csv CalculaArea.m Libro1.xlsx Matrizcsv.csv experimental.xlsx DP.txt Matrices.mat Numero_Potencia.m
% Muestra el archivo en la linea de comandos
type Matriz.txt
3.0000000e+00 9.0000000e+00 4.0000000e+00 7.0000000e+00 1.0000000e+00 0.0000000e+00
%Edita el archivo
edit Matriz.txt
%Muestra el directorio activo
pwd()
ans = '/Users/epacheco/Google Drive/UNAM 2021/Docencia/Semestre 2021-2/Metodo numericos con Matlab/GuiaMatlab'
% Condicion que prueba si existe un directorio o archivo
exist('Prueba')
ans = 0
%Crea un directorio
mkdir('Prueba')
exist('Prueba')
ans = 7
%Acceder a la carpeta o ubicarme en ese directorio
cd('Prueba')
% Retrocede una carpeta anterior
cd('..')
%Copia un archivo a un directorio
copyfile('Matriz.txt','Prueba')
%Borra un archivo
delete('Prueba/Matriz.txt')
%Borra un directorio
rmdir('Prueba')
%Leer archivos en un directorio con dir
cd('Archivos')
Archivos=dir()
Archivos = 7×1 struct array with fields:
name folder date bytes isdir datenum
%Leer archivos en un directorio con ls
Archivos2=split(ls())
Archivos2 = 6×1 cell array
{'Datostxt.txt' } {'experimental.txt' } {'predict.txt' } {'Libro1.xlsx' } {'experimental.xlsx'} {0×0 char }
Archivos2{2}
ans = 'experimental.txt'
cd('..')

Gráficas

Gráficas en 2D

x=0:0.1:2*pi;
y=cos(x);
z=sin(x);
%Graficar
plot(x,y,'r--')
%Un solo plot en un mismo figure
plot(x,y,'r*',x,z,'g--')
%con hold on y off
hold on
plot(x,y,'r*')
plot(x,z,'g--')
hold off
%Con figure
figure
plot(x,y,'r*')
figure
plot(x,z,'g--')
%Acotamos los ejes
x=0:0.1:2*pi
x = 1×63
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000 2.1000 2.2000 2.3000 2.4000 2.5000 2.6000 2.7000 2.8000 2.9000
Y=[cos(x);sin(2*x)]
Y = 2×63
1.0000 0.9950 0.9801 0.9553 0.9211 0.8776 0.8253 0.7648 0.6967 0.6216 0.5403 0.4536 0.3624 0.2675 0.1700 0.0707 -0.0292 -0.1288 -0.2272 -0.3233 -0.4161 -0.5048 -0.5885 -0.6663 -0.7374 -0.8011 -0.8569 -0.9041 -0.9422 -0.9710 0 0.1987 0.3894 0.5646 0.7174 0.8415 0.9320 0.9854 0.9996 0.9738 0.9093 0.8085 0.6755 0.5155 0.3350 0.1411 -0.0584 -0.2555 -0.4425 -0.6119 -0.7568 -0.8716 -0.9516 -0.9937 -0.9962 -0.9589 -0.8835 -0.7728 -0.6313 -0.4646
plot(x,Y)
axis([0 3 -1 0.5]);
% Colocar los nombres de los ejes
xlabel('Valores de x');
ylabel('Valores de y');
title('Grafica de prueba')
grid on
box off
%delimitando solo un eje
figure(4)
x=linspace(0,3,200);
y=1./(x-1).^2;
z=1./x.^2;
plot(x,y,'g',x,z,'m')
ylim([0 10])
xlim([0 2])
box off
%Agregando leyendas y texto
legend('\bfMarea','\itTemperatura','location','best')
text(1,3,'No existen valores para x=1')
%Poner texto con el mouse
plot(x,cos(x))
axis equal
gtext('texto a poner')
%Rellenar un poligono
x=[1 4 2 0]
x = 1×4
1 4 2 0
y=[1 3 5 4]
y = 1×4
1 3 5 4
plot(x,y)
fill(x,y,'b')
%Multiples graficas en un solo figure
subplot(321)
fplot('cos(x)',[0 4*pi])
Warning: fplot will not accept character vector or string inputs in a future release. Use fplot(@(x)cos(x)) instead.
title('Grafica 1')
subplot(322)
fplot('abs(cos(x))',[0 4*pi])
Warning: fplot will not accept character vector or string inputs in a future release. Use fplot(@(x)abs(cos(x))) instead.
grid on
subplot(323)
fplot('[sin(x),sin(2*x),sin(3*x)]',[0 2*pi])
Warning: fplot will not accept character vector or string inputs in a future release. Use fplot(@(x)[sin(x),sin(2.*x),sin(3.*x)]) instead.
subplot(324)
fplot('[sin(x),cos(x)]',[0 2*pi])
Warning: fplot will not accept character vector or string inputs in a future release. Use fplot(@(x)[sin(x),cos(x)]) instead.
legend('sin', 'cos');
subplot(325)
plot(x,cos(x),'r*')
%Guardamos la grafica (checar save as)
hgexport(gcf, "Grafica1.png", hgexport('factorystyle'),'Format', 'png')
%Lectura de puntos con el raton
figure
axis([0 1 0 1])
[x,y]=ginput(4)
x = 4×1
0.1932 0.6275 0.8371 0.3422
y = 4×1
0.6406 0.8387 0.4233 0.2668
plot(x,y)
axis([0 1 0 1])

Gráficas en 3D

%Graficas en 3D o superficies
t=-1:0.1:1
t = 1×21
-1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
[X,Y]=meshgrid(t,t)
X = 21×21
-1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 -1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 -1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 -1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 -1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 -1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 -1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 -1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 -1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 -1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
Y = 21×21
-1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.9000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.8000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.7000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.6000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.5000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.4000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.3000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.2000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000 -0.1000
Z=X.^2-Y.^2
Z = 21×21
0 -0.1900 -0.3600 -0.5100 -0.6400 -0.7500 -0.8400 -0.9100 -0.9600 -0.9900 -1.0000 -0.9900 -0.9600 -0.9100 -0.8400 -0.7500 -0.6400 -0.5100 -0.3600 -0.1900 0 0.1900 0 -0.1700 -0.3200 -0.4500 -0.5600 -0.6500 -0.7200 -0.7700 -0.8000 -0.8100 -0.8000 -0.7700 -0.7200 -0.6500 -0.5600 -0.4500 -0.3200 -0.1700 0 0.1900 0.3600 0.1700 0 -0.1500 -0.2800 -0.3900 -0.4800 -0.5500 -0.6000 -0.6300 -0.6400 -0.6300 -0.6000 -0.5500 -0.4800 -0.3900 -0.2800 -0.1500 0 0.1700 0.3600 0.5100 0.3200 0.1500 0 -0.1300 -0.2400 -0.3300 -0.4000 -0.4500 -0.4800 -0.4900 -0.4800 -0.4500 -0.4000 -0.3300 -0.2400 -0.1300 0 0.1500 0.3200 0.5100 0.6400 0.4500 0.2800 0.1300 0 -0.1100 -0.2000 -0.2700 -0.3200 -0.3500 -0.3600 -0.3500 -0.3200 -0.2700 -0.2000 -0.1100 0 0.1300 0.2800 0.4500 0.6400 0.7500 0.5600 0.3900 0.2400 0.1100 0 -0.0900 -0.1600 -0.2100 -0.2400 -0.2500 -0.2400 -0.2100 -0.1600 -0.0900 0 0.1100 0.2400 0.3900 0.5600 0.7500 0.8400 0.6500 0.4800 0.3300 0.2000 0.0900 0 -0.0700 -0.1200 -0.1500 -0.1600 -0.1500 -0.1200 -0.0700 0 0.0900 0.2000 0.3300 0.4800 0.6500 0.8400 0.9100 0.7200 0.5500 0.4000 0.2700 0.1600 0.0700 0 -0.0500 -0.0800 -0.0900 -0.0800 -0.0500 0 0.0700 0.1600 0.2700 0.4000 0.5500 0.7200 0.9100 0.9600 0.7700 0.6000 0.4500 0.3200 0.2100 0.1200 0.0500 0 -0.0300 -0.0400 -0.0300 0 0.0500 0.1200 0.2100 0.3200 0.4500 0.6000 0.7700 0.9600 0.9900 0.8000 0.6300 0.4800 0.3500 0.2400 0.1500 0.0800 0.0300 0 -0.0100 0 0.0300 0.0800 0.1500 0.2400 0.3500 0.4800 0.6300 0.8000 0.9900
subplot(321)
surf(X,Y,Z)
subplot(322)
hold on
surf(X,Y,Z)
shading flat
contour3(X,Y,Z,'k')
subplot(323)
surf(X,Y,Z)
shading interp, colorbar;
subplot(324)
surfc(X,Y,Z)
subplot(325)
contour(X,Y,Z)
subplot(326)
contourf(X,Y,Z)

Programación

Ejemplos prácticos para entender un poco sobre las sentencias de decisión, sentencias de repetición y las funciones.
%1) Hacer un programa que dado dos números determine cual es el mayor.
Num1=9;
Num2=-1;
% Validar que los números sean numéricos
if (isnumeric(Num1) && isnumeric(Num2))
if (Num1==Num2)
fprintf('Ambos son iguales\n');
elseif(Num1>Num2)
fprintf('%d es el Mayor\n',Num1);
else
fprintf('%d es el Mayor\n',Num2);
end
else
error('Los números deben ser enteros')
end
9 es el Mayor
% Realizado como funcion
BuscaMayor(4,9)
9 es el Mayor
BuscaMayor(-1,0)
0 es el Mayor
%2) Hacer un programa que dado una cadena que indique la potencia y un número
% que realice dicha operación con el número dado.
Numero=3;
Potencia='Cubo';
switch (Potencia)
case 'Cuadrado'
Resultado=Numero.^2;
case 'Cubo'
Resultado=Numero.^3;
case 'Cuarta'
Resultado=Numero.^4;
otherwise
Resultado=Numero;
end
Resultado
Resultado = 27
% Como funcion
Num=Numero_Potencia(4,'Cubo')
Num = 64
Num2=Numero_Potencia(-1,'Cuarta')
Num2 = 1
Val1=Numero_Potencia('x','Cuarta')
El primer parámetro debe ser un número
Val1 = 0
Val2=Numero_Potencia(4,5)
El segundo parámetro debe ser una cadena
Val2 = 0
%3) Hacer un programa que dado un vector, realice la suma de sus valores.
vector=[2 9 7 0 7 8 9];
Resultado=sum(vector); %Forma óptima
% Práctica
suma=0;
tamVec=length(vector);
for i=1:tamVec
valor=vector(i);
suma=suma+valor;
end
suma
suma = 42
% En forma de función
suma=SumaVec(vector)
suma = 42
suma=SumaVec([nan 4 6 nan 5 9 0 -1 nan])
suma = 23
%4) Hacer un programa que dado un vector determine si ese vector tiene por lo
%menos un cero.
%Forma de hacerlo llegando al ultimo elemento
vector=[2 9 7 1 7 8 9 1:5 nan];
tam=length(vector);
for i=1:tam
valor=vector(i);
if valor==0
disp('El vector tiene por lo menos un valor 0');
break;
end
if (i==tam)
disp('El vector no tiene valores 0');
end
end
El vector no tiene valores 0
% Forma de funcion
[Mensaje, Iteraciones]=BuscaCeros(vector)
Mensaje = 'El vector no tiene valores 0'
Iteraciones = 13
% Utilizar banderas
vector=[2 9 7 1 7 8 9 1:5 -1];
tam=length(vector);
bandera=0;
for i=1:tam
valor=vector(i);
if valor==0
bandera=1;
break;
end
end
if bandera==1
disp('El vector tiene valores cero');
else
disp('El vector no tiene ceros');
end
El vector no tiene ceros
vector=[0 9 7 1 7 8 9 1:5 -1];
tam=length(vector);
bandera=0;
i=1;
while i<=tam
valor=vector(i);
if valor==0
bandera=1;
break;
end
i=i+1;
end
%% En forma de función se deja de tarea al estudiante
%%[bandera,iteraciones]=BuscaCerosBand(vector)
if bandera==1
disp('El vector tiene valores cero');
else
disp('El vector no tiene ceros');
end
El vector tiene valores cero
%5) Hacer el mismo programa anterior pero utilizando el ciclo while y los
%comandos break y continue.
% Forma 1 utilizando el tamaño del vector como condicion de parada
vector=[0 9 7 1 7 8 9 1:5 -1];
tam=length(vector);
bandera=0;
i=1;
while i<=tam
valor=vector(i);
if valor==0
bandera=1;
break;
end
i=i+1;
end
if bandera==1
disp('El vector tiene valores cero');
else
disp('El vector no tiene ceros');
end
El vector tiene valores cero
% Forma 2 cuando la condicion de parada sea encontrar el cero
vector=[0 9 7 1 7 8 9 1:5 -1];
tam=length(vector);
i=1;
valor=vector(i);
while (valor~=0 && i<=tam)
valor=vector(i);
i=i+1;
end
if valor==0
disp('El vector tiene valores cero');
else
disp('El vector no tiene ceros');
end
El vector tiene valores cero
%5) Realizar las funciones de los ejercicios anteriores