Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Archivos m.
En el momento de ejecutar una aplicacin en alguna rea de inters, a veces es necesario
realizar varias secuencias de algunas operaciones, algunas de ellas en forma repetida, lo
cual resulta sumamente tedioso. Lo cual puede ser hecho por un programa , que desde
luego debe estar bien estructurado, y entendible por la computadora. Para ello se usan
los ficheros script, tambin llamado archivos .m
Un fichero script es un conjunto de sentencias u rdenes que se ejecutan en forma
secuencial. En algunos casos debido a la estructura misma del programa se llamara
funcin.
Para que estos programas sean coherentes y los pueda leer el programa Matlab, deben
seguir un orden lgico. Estos ficheros tienen extensin m. y se pueden editar y/o
ejecutar las veces que sea necesario.
En algunos casos es necesario que el programador ingrese algunos datos para que el
programa funcione. Estos debern ser ingresados por teclado posiblemente, y en algn
formato adecuado. Para esto hay comandos adecuados.
04 archivos .m 1
04. Archivos m. Lic. Amado Malca Villalobos
>> what
M-files in the current directory C:\Users\Malca\Documents\MATLAB
DistPaL curva3d05 datos prom
curva3d01 curva3d06 dfun prom_2
curva3d02 curvar3 ejemplo01 prom_3
curva3d03 curvasR3 ejemplo4_2 prommult5
curva3d04 curvatemp fun solcuad
>> pwd
ans = C:\Users\Malca\Documents\MATLAB
>> dir
. curva3d04.m datos.asv prom.m
.. curva3d05.m datos.m prom_2.m
DistPaL.asv curva3d06.m datos.xlsx prom_3.m
DistPaL.m curvar3.asv datos_lluvia.xls prommult5.m
curva3d01.m curvar3.m dfun.m solcuad.m
curva3d02.m curvasR3.asv ejemplo01.m
curva3d03.asv curvasR3.m ejemplo4_2.m
curva3d03.m curvatemp.asv fun.asv
curva3d04.asv curvatemp.m fun.m
>> cd
C:\Users\Malca\Documents\MATLAB
04 archivos .m 2
04. Archivos m. Lic. Amado Malca Villalobos
Ahora crearemos un programa, para ello abriremos un archive Nuevo, de tipo m-file,
segun lo indicado en los siguientes graficos.
solcuad.m Ejecucucion
% programa que resuelve una >> solcuad
ecuacin cuadrtica sol_1 = 1.2899
04 archivos .m 3
04. Archivos m. Lic. Amado Malca Villalobos
Ejemplo: En el siguiente caso se construir una funcin, la cual tiene una pequea
diferencia en su estructura que contiene una lnea adicional, que ser explicada con
mayor detalle en el siguiente acpite.
Se creara la funcin: y f x x3 5x 2 8x 4 . Luego de lo cual se podr evaluar,
graficar y hacer algunas cosas ms propias de las funciones matemticas.
fun.m Ejecucucion
function y=fun(x) >> fun(3),fun(1),fun(7),fun(13)
ans = 34
% programa que calcula el valor ans = 0
de ans = 438
% una funcin dado el valor de x. ans = 2604
>>
y=x.^3+3*x.^2-8*x+4; >> x=-6:0.1:5;
>> y=fun(x);
>> plot(x,y)
>>
>> help fun
programa que calcula el valor de
una funcin dado el valor de x.
>>
04 archivos .m 4
04. Archivos m. Lic. Amado Malca Villalobos
200
150
100
50
-50
-100
-6 -4 -2 0 2 4 6
VARIABLES GLOBALES
Recuerde que las variables escritas en un archivo script (programa), se ejecutan como si
estuvieran en la ventana de comandos, salvo las que estn en un ficheros tipo fuction.
Cuando se ejecuta un fichero script, las variables utilizadas en los clculos dentro del
fichero deben tener valores asignados previamente en el mismo script. Esta asignacin
se puede hacer de tres formas:
- Variable definida y asignada en el fichero script.
- Variable definida y asignada en la ventana de comandos.
- Variable definida y asignada en el fichero script, pero luego se cambia en la
ventana de comandos
04 archivos .m 5
04. Archivos m. Lic. Amado Malca Villalobos
04 archivos .m 6
04. Archivos m. Lic. Amado Malca Villalobos
Prom_2.m
% Calculo del promedio de cuatro jugadas
% los valores se ingresan por la ventana de
comandos
% con las variables j1, j2, j3 y j4
Puntuacion_Media=(j1+j2+j3+j4)/4
Ejecucin en MatLab
>> clear % para limpiar memoria de variables pre asignadas
>> prom_2
??? Undefined function or variable
'j1'.
Error in ==> prom_2 at 5
Puntuacion_Media=(j1+j2+j3+j4)/4
>> j1=87, j2=90, j3=86, j4=64 % corrigiendo el problema de las variables
j1 = 87
j2 = 90
j3 = 86
j4 = 64
>> prom_2
Puntuacion_Media = 81.7500
>> help prom_2
Calculo del promedio de cuatro jugadas
los valores se ingresan por la ventana de comandos
con las variables j1, j2, j3 y j4
04 archivos .m 7
04. Archivos m. Lic. Amado Malca Villalobos
Prom_3.m
% este programa calcula el promedio
% de un conjunto de tres jugadas
% las cuales se ingresan en la ventana de
comandos
% usando el comando input
j1=input('Ingrese la primera puntuacin:')
j2=input('Ingrese la segunda puntuacin:')
j3=input('Ingrese la tercera puntuacin:')
j4=input('Ingrese la cuarta puntuacin:')
Puntuacion_Media=(j1+j2+j3+j4)/4
Ejecucion en MatLab
>> prom_3
Ingrese la primera puntuacion:87
j1 = 87
Ingrese la segunda puntuacion:98
j2 = 98
Ingrese la tercera puntuacion:67
j3 = 67
Ingrese la cuarta puntuacion:82
j4 = 82
Puntuacion_Media = 83.5000
>> help prom_3
este programa calcula el promedio
de un conjunto de tres jugadas
las cuales se ingresan en la ventana de comandos
usando el comando input
>>
04 archivos .m 8
04. Archivos m. Lic. Amado Malca Villalobos
Ejemplo:
>> disp('Hola a todos')
Hola a todos
>> A=[1 7 -2;4 -5 6;8 5 -9]
A=
1 7 -2
4 -5 6
8 5 -9
>> disp(A)
1 7 -2
4 -5 6
8 5 -9
>> disp('La matriz buscada es:')
04 archivos .m 9
04. Archivos m. Lic. Amado Malca Villalobos
Ejemplo:
>> x=[1:10]';
>> P=[x x.^2 x.^3];
>> disp(' numero cuadrado cubo'),disp(P)
numero cuadrado cubo
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
>>
Ejemplo
>> disp(['La ','matemtica ','es ','la ','madre ','de ','todas ','las ','ciencias'])
La matemtica es la madre de todas las ciencias
>> disp(['La','matematica','es','la','madre','de','todas','las','ciencias'])
Lamatematicaeslamadredetodaslasciencias
>> disp(['La ','matemtica ','es ','la ','madre ','de ','todas ','las ','ciencias'])
La matemtica es la madre de todas las ciencias
>> disp(['Aritmetica';'Algebra';'Geometria';'Analisis';'Discreta'])
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
>> disp(['Aritmetica';'Algebra ';'Geometria ';'Analisis ';'Discreta '])
Aritmetica
Algebra
Geometria
Analisis
Discreta
>>
En la ltima lnea de los comandos las palabras deban tener la misma longitud, de 10
letras, incluyendo espacios.
04 archivos .m 10
04. Archivos m. Lic. Amado Malca Villalobos
el valor promedio es
3.9199
>>
Ejemplo: Mostrar una tabla con los n primeros enteros positivos, sus cuadrados y sus
cubos.
Solucin:
Ejemplo4_2.m
% Este programa crea una tabla de los
primeros n nmeros enteros positivos
% sus cuadrados y sus cubos
n=[1:5]';
cuadrado=n.^2;
cubo=n.^3;
disp(' n n^2 n^3')
tabla=[n,cuadrado,cubo];
disp(tabla)
Ejecucin en MatLab:
>> ejemplo4_2
n n^2 n^3
1 1 1
2 4 8
3 9 27
4 16 64
04 archivos .m 11
04. Archivos m. Lic. Amado Malca Villalobos
5 25 125
El comando fprintf
Este comando visualiza salidas de programas en la pantalla, a diferencia del disp., aqu
se puede dar algn formato a la presentacin de los datos.
Visualizando mensajes de texto:
fprintf(Mensaje en forma de cadena)
ejemplo02.m
%ahora tenemos un programa que
obtiene cuadrados y cubos
n=[1:5]';
cuadrado=n.^2;
cubo=n.^3;
disp(' n n^2
n^3')
tabla=[n,cuadrado,cubo];
disp(tabla)
fprintf('ahi tenemos la relacin de
cuadrado y cubos')
04 archivos .m 12
04. Archivos m. Lic. Amado Malca Villalobos
Los elementos del formato para los datos, son cuatro algunos opcionales otros
obligatorios: -5.2f
El primero llamado flag o bandera (opcional)
Smbolo Descripcin
- Justificacin izquierda dentro del campo
+ Visualiza el carcter del signo (+ -) delante del
numero
0 Aade ceros si el numero es ms pequeo que
el campo
04 archivos .m 13
04. Archivos m. Lic. Amado Malca Villalobos
280
P = 235.2500
El valor medio de las lluvias es 2.35e+002 mensual.
El valor medio de las lluvias es 235.25 mensual.
El valor medio de las lluvias es 2.352500e+002 mensual.
El valor medio de las lluvias es 235.25 mensual.
>>
Aqu va un ejemplo en el cual hay insertados varios valores numricos, dentro del
texto.
ej04.m
% tenemos un conjunto de doce datos de lluvia en miles de litros,
en forma
% mensual. En la amazonia peruana
%p representa el valor promedio de las lluvias
D=[286 253 254 305 274 203 165 190 161 228 224
280]
m=min(D);
M=max(D);
S=sum(D);
P=mean(D);
fprintf('\nEl valor medio de las lluvias es %6.2e mensual.\n',P)
fprintf('\nEl valor mnimo es %4i , el mximo es %4i y el total de
lluvias es %6i.\n',m,M,S)
La ejecucin en Matlab
>> ej04
D = 286 253 254 305 274 203 165 190 161 228 224
280
El valor medio de las lluvias es 2.35e+002 mensual.
04 archivos .m 14
04. Archivos m. Lic. Amado Malca Villalobos
>> ej5
w=
1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000
8.0000
1.0000 4.0000 9.0000 16.0000 25.0000 36.0000 49.0000
64.0000
1.0000 1.4142 1.7321 2.0000 2.2361 2.4495 2.6458
2.8284
el numero 1 su cuadrado 1 su raz 1.000000
el numero 2 su cuadrado 4 su raz 1.414214
el numero 3 su cuadrado 9 su raz 1.732051
el numero 4 su cuadrado 16 su raz 2.000000
el numero 5 su cuadrado 25 su raz 2.236068
el numero 6 su cuadrado 36 su raz 2.449490
el numero 7 su cuadrado 49 su raz 2.645751
el numero 8 su cuadrado 64 su raz 2.828427
>>
Ejemplo adicional
ej06.m
% archivo ejecutable de nombre: ejem06.m
% uso de los comandos de entrada por teclado, y salida por
pantalla.
w=[1:10;sqrt(1:10)]
fprintf('Un entero es %g y su raz cuadrada es %g \n',w)
z=[1:10;sqrt(1:10);(1:10).^2;(1:10).^3]
fprintf(' n=%g sqrt(n)=%g n^2=%g n^3=%g \n',z)
z=[1000555:1000560;sqrt(1000555:1000560)]
fprintf('n=%2.3g sqrt(n)=%1.10g\n',z)
04 archivos .m 15
04. Archivos m. Lic. Amado Malca Villalobos
fprintf('n=%2.6g sqrt(n)=%1.10g\n',z)
fprintf('n=%2.6g sqrt(n)=%4.10g\n',z)
La ejecucin en Matlab
>> malca
cual es tu nombre: amado
tus apellidos son: malca villalobos
de que orden son las matrices cuadradas A y B: 4
ingrese la matriz A : [1 2 3 4;3 5 1 7;6 1 3 5;7 0 5 1]
A=
1 2 3 4
3 5 1 7
6 1 3 5
7 0 5 1
ingrese la matriz B : [9 2 3 4;3 5 8 7;1 1 3 5;7 0 5 0]
B=
9 2 3 4
3 5 8 7
1 1 3 5
7 0 5 0
la suma A+B, la resta A-B es :
10 4 6 8
6 10 9 14
7 2 6 10
14 0 10 1
-8 0 0 0
0 0 -7 0
5 0 0 0
0 0 0 1
El producto A*B, la division A/B es :
46 15 48 33
92 32 87 52
95 20 60 46
75 19 41 53
04 archivos .m 16
04. Archivos m. Lic. Amado Malca Villalobos
w= Columns 1 through 10
1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000
8.0000 9.0000 10.0000
z = 1.0e+003 *
04 archivos .m 17
04. Archivos m. Lic. Amado Malca Villalobos
z = 1.0e+006 *
n=1e+006 sqrt(n)=1000.277462
n=1e+006 sqrt(n)=1000.277961
n=1e+006 sqrt(n)=1000.278461
n=1e+006 sqrt(n)=1000.278961
n=1e+006 sqrt(n)=1000.279461
n=1e+006 sqrt(n)=1000.279961
n=1.00056e+006 sqrt(n)=1000.277462
n=1.00056e+006 sqrt(n)=1000.277961
n=1.00056e+006 sqrt(n)=1000.278461
n=1.00056e+006 sqrt(n)=1000.278961
n=1.00056e+006 sqrt(n)=1000.279461
n=1.00056e+006 sqrt(n)=1000.279961
n=1.00056e+006 sqrt(n)=1000.277462
n=1.00056e+006 sqrt(n)=1000.277961
n=1.00056e+006 sqrt(n)=1000.278461
n=1.00056e+006 sqrt(n)=1000.278961
n=1.00056e+006 sqrt(n)=1000.279461
n=1.00056e+006 sqrt(n)=1000.279961
>>
04 archivos .m 18
04. Archivos m. Lic. Amado Malca Villalobos
donde:
num: Es una matriz de tipo numrico en el cual sern guardados todos los datos
numricos encontrados dentro de la hoja y rango especificado.
text: Matriz de tipo celda donde se guardaran todos las cadenas que sean encontradas
dentro de la hoja y rango especificado. Cada cadena se guarda en una celda dentro de
la matriz.
NombreArchivo: El nombre o ruta del archivo a leer. Este parmetro debe ser una
cadena.
Ejemplo: Ahora se leer un archivo en Excel, llamado datos.xlsx
04 archivos .m 19
04. Archivos m. Lic. Amado Malca Villalobos
''
'numero'
'cuadrado'
'cubo'
>>
Leyendo por separado la informacin
>> [A,B]=xlsread('datos.xlsx','hoja2','c2:j3')
A=
1 2 3 4 5 6 7
180 156 147 206 210 235 222
B=
'Mes'
'LLuvia'
>>
>> [C,D]=xlsread('datos.xlsx','hoja2','c6:j8')
C=
1 2 3 4 5 6 7
1 4 9 16 25 36 49
1 8 27 64 125 216 343
D=
'numero'
'cuadrado'
'cubo'
>>
>> xlsread('datos.xlsx','hoja2','c6:j8')
ans =
1 2 3 4 5 6 7
1 4 9 16 25 36 49
1 8 27 64 125 216 343
>>
Lo primero que debemos conocer es la funcin y la sintaxis necesaria para realizar esta
operacin; Esta se llama xlswrite y su sintaxis es la siguiente:
xlswrite( NombreArchivo, Datos)
04 archivos .m 20
04. Archivos m. Lic. Amado Malca Villalobos
Donde:
Estado= regresa 1 cuando la operacin de escritura ha sido un xito, 0 en caso
contrario.
NombreArchivo: El nombre o ruta del archivo al que se escribir, si no se escribe la
ruta completa, tomara por deafult que el archivo se encuentra en el current directory,
si el archivo no existe lo crear. Este parmetro debe ser una cadena.
Datos: Son los datos que se escribirn en el archivo, pueden ser numricos o
caracteres.
Hoja: Es la hoja en la que se escribir, por default Hoja1, este parmetro debe ser una
cadena.
CeldaInicial: A partir de esta se empezara la escritura de los datos, este parmetro
debe ser una cadena.
Ejemplo: Ahora se creara una matriz A, y luego se grabara en un archivo de Excel
Creando la matriz y escribiendo en la hoja de calculo
>> A=[1 7 -2;4 -5 6;8 5 -9]
A=
1 7 -2
4 -5 6
8 5 -9
>> xlswrite('arch_datos.xlsx',A)
Archivo en la PC, en la carpeta de trabajo de MatLab
Archivo de excel
04 archivos .m 21
04. Archivos m. Lic. Amado Malca Villalobos
Archivo de excel
04 archivos .m 22
04. Archivos m. Lic. Amado Malca Villalobos
EJEMPLOS ADICIONALES
El area de un triangulo
area.m
function [A] = area(a,b,c)
% Calcula el area de un triangulo
cualquiera
% se tienen las longitudes de los lados
a, b y c
% Ingreso: a,b,c: Longitudes de los
lados
% Salida: A: area del triangulo
%
p = (a+b+c)/2;
A = sqrt(p*(p-a)*(p-b)*(p-c));
La ejecucin en Matlab
>> help area
Calcula el area de un triangulo cualquiera
se tienen las longitudes de los lados a, b y c
Ingreso: a,b,c: Longitudes de los lados
Salida: A: area del triangulo
>> area(5,7,12)
ans = 0
>> area(3,4,5)
ans = 6
>> area(3,4,50)
ans = 0 +6.1872e+002i
>> area(13,45,50)
ans = 282.3190
>>
F=zeros(1,n);
F(1)=1;
F(2) = 1;
for i = 3:n
F(i) = F(i-1) + F(i-2);
end
f = F(n);
La ejecucin en Matlab
04 archivos .m 23
04. Archivos m. Lic. Amado Malca Villalobos
04 archivos .m 24
04. Archivos m. Lic. Amado Malca Villalobos
% Sucesion de Fibonacci
% Usando matrices
A = [0 1;1 1];
y = A^n*[0;1];
f=y(1);
La ejecucin en Matlab
>> Fib3(6)
ans = 8
>> Fib3(16)
ans = 987
>>
70
60
50
40
30
20
10
0
0 2 4 6 8 10 12
04 archivos .m 25