Anda di halaman 1dari 28

01. Archivos m. Lic.

Amado Malca Villalobos

Archivos m.
En el momento de ejecutar una aplicación en alguna área de interés, 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, también 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
función.
Para que estos programas sean coherentes y los pueda leer el programa Matlab, deben
seguir un orden lógico. Estos ficheros tienen extensión 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 deberán ser ingresados por teclado posiblemente, y en algún
formato adecuado. Para esto hay comandos adecuados.

Notas sobre los ficheros script


- Un fichero script es una secuencia de comandos de MatLab, también denominado
programa.
- Cuando se ejecuta un fichero script, MatLab ejecuta los comandos en el orden en que
éstos han sido escritos, igual que si se ejecutaran uno a uno en la ventana de
comandos.
- Cuando un fichero script contiene un comando que produce una salida o resultado
(ejemplo una asignación de variable sin un punto y coma al final), la salida se visualiza
en la ventana de comandos.
- La utilización de ficheros script es conveniente, ya que estos pueden ser editados (es
decir se pueden corregir o modificar), y se pueden ejecutar tantas veces como se
quiera.
- Los ficheros script se pueden crear y editar en cualquier editor de texto. Asimismo el
texto se puede copiar y pegar desde estos editores a MatLab para ser ejecutado.
Los ficheros script también de denominan ficheros M, ya que la extensión .m es la que
utiliza y reconoce MatLab cuando se guardan estos archivos.
- Un fichero script se puede ejecutar, bien tecleando su nombre en la Ventana de
Comandos (y pulsando la tecla enter) o bien desde la ventana del editor a través del
icono Run (ejecutar).
- Estos programas siempre deben estar en el directorio actual de MatLab, para poder
ejecutarse. Que se puede ver en la siguiente figura

04 archivos .m 1
01. Archivos m. Lic. Amado Malca Villalobos

Ordenes útiles para carpetas


Como ya se ha dicho, si el archivo de texto no se graba en la carpeta de trabajo de
MATLAB no podrá ser ejecutado. Conviene tener ciertas herramientas que ayuden a
comprobar esta situación.

_ Para comprobar los archivos .m que tiene en la carpeta de trabajo de MATLAB


pruebe la orden what.
_ Para saber la carpeta de trabajo que MATLAB está usando existe la orden pwd.
_ Para saber la lista de todos los archivos en la carpeta de trabajo de MATLAB pruebe
la orden dir. Aparecerán los archivos de tipo .m y también los de otros tipos.
- Con el comando cd, se muestra el directorio de trabajo actual.

>> 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
01. 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.

Ejemplo: Resolver la ecuación cuadrática 5x2 - 8x + 4 = 0

Para ello lo primero a hacer es abrir un archivo m, e ir escribiendo en el. La primera


parte comprende un breve comentario sobre lo que hace el programa, estas líneas
siempre van precedidas del símbolo de porcentaje (%), lo cual le indica a MatLab que
no debe ejecutarse.
Si queremos visualizar ello basta con llamar al programa precedido del comando help.

solcuad.m Ejecucucion
% programa que resuelve una >> solcuad
ecuación cuadrática sol_1 = 1.2899

04 archivos .m 3
01. Archivos m. Lic. Amado Malca Villalobos

% 5x2-8x+2=0 sol_2 = 0.3101


>> help solcuad
sol_1=(8+sqrt(8^2-4*5*2))/10 programa que resuelve una
sol_2=(8-sqrt(8^2-4*5*2))/10 ecuación cuadrática
5x2-8x+2=0
>>

Ejemplo: En el siguiente caso se construirá una función, la cual tiene una pequeña
diferencia en su estructura que contiene una línea adicional, que será explicada con
mayor detalle en el siguiente acápite.
Se creara la función: y = f (x)= x3 + 5x2 - 8x + 4 . Luego de lo cual se podrá evaluar,
graficar y hacer algunas cosas más propias de las funciones matemáticas.

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 función 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 función dado el valor de x.
>>

04 archivos .m 4
01. Archivos m. Lic. Amado Malca Villalobos

200

150

100

50

-50

-100
-6 -4 -2 0 2 4 6

Grafico de la función en el intervalo [-6, 6]

Vista de la ventana de comandos en MatLab, del archivo m, y del grafico de la función.

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 están en un ficheros tipo fuction.
Cuando se ejecuta un fichero script, las variables utilizadas en los cálculos dentro del
fichero deben tener valores asignados previamente en el mismo script. Esta asignación
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
01. Archivos m. Lic. Amado Malca Villalobos

Variable definida y asignada en el fichero script.


La asignación de la variable forma parte del fichero, Si se quiere cambiar el valor
simplemente se edita el fichero y se guarda los cambios.

Ejemplo: Ahora presentaremos un programa que halla el puntaje promedio de varias


jugadas en un casino.
prom.m Ejecución
% este programa calcula el >> prom
promedio Puntuacion_Media =
% de un conjunto de jugadas 82.5000
j1=80; >> help prom
j2=85; este programa calcula el
j3=75;
promedio
j4=90;
de un conjunto de jugadas
Puntuacion_Media=(j1+j2+j3+j4)/4
>>

04 archivos .m 6
01. Archivos m. Lic. Amado Malca Villalobos

Variable definida y asignada en la ventana de comandos.


En este caso el o los valores de la variable se indican en la ventana de comandos, y
luego se ejecuta el programa. Aquí los valores de las variables solo se cambian en la
ventana de comandos.

Ejemplo: El programa requerido es el mismo anterior, hallaremos el puntaje promedio


de varias jugadas en un casino. Pero los valores se ingresaran por teclado.

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
Ejecución 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

Variable definida y asignada en el fichero script, pero luego se cambia en la


ventana de comandos. Comando input
En esta opción la variable se define en el fichero script, y cuando se ejecuta tal archivo
al usuario se le pide un valor concreto a través de la ventana de comandos, y a estas
variables se les asigna el valor correspondiente.
Esto se hace con el comando input. Cuya sintaxis es:

𝑛𝑜𝑚𝑏𝑟𝑒𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 = 𝑖𝑛𝑝𝑢𝑡(′𝑚𝑒𝑛𝑠𝑎𝑗𝑒 𝑞𝑢𝑒 𝑠𝑒 𝑚𝑢𝑒𝑠𝑡𝑟𝑎 𝑒𝑛 𝑙𝑎𝑠 𝑣𝑒𝑛𝑡𝑎𝑛𝑎 𝑑𝑒 𝑐𝑜𝑚𝑎𝑛𝑑𝑜𝑠′)

Al ejecutar este comando se muestra en la ventana de comandos el mensaje indicado,


luego del cual el usuario ingresara el valor de la variable en forma adecuada.

04 archivos .m 7
01. Archivos m. Lic. Amado Malca Villalobos

Ejemplo: Igual al caso anterior, se hallara el valor promedio de un conjunto de puntajes


de jugadas en un casino.

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 puntuación:')
j2=input('Ingrese la segunda puntuación:')
j3=input('Ingrese la tercera puntuación:')
j4=input('Ingrese la cuarta puntuación:')
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
>>

COMANDO DE INGRESO DE DATOS:


Un dato cualquiera o una matriz puede ingresarse mediante el teclado a pedido de algún
programa, los llamados archivos ****.m, mediante el comando: input
Hay dos tipos de objetos que ingresan por teclado, numéricos (Matriz) o como una
cadena de letras y/o símbolos (String).
Los formatos son:
x=input('comentario: ')
x=input('comentario: \n')
o tambien:
x=input('ingrese su nombre: ','s')
x=input('ingrese su nombre: \n ','s')

En el primer caso aparecerá el comentario en la pantalla, y la matriz ingresada se


asignara a la variable x.
En el segundo la diferencia está en que el cursor para ingresar la información pasa a la
siguiente línea.

04 archivos .m 8
01. Archivos m. Lic. Amado Malca Villalobos

En el tercer caso aparecerá el comentario en la pantalla, y se asignara a la variable x. La


diferencia está en que en el tercer caso la variable no solo puede ser una matriz sino
también una cadena de caracteres cualesquiera.
En el cuarto caso, al igual que el segundo, el cursor para ingresar la información pasa a
la siguiente línea.

Ahora veamos algunos ejemplos:

>> A=input('ingrese su edad: ');


ingrese su edad: 46
A = 46
>> A=input('ingrese su edad: ');
ingrese su edad: 25
>> A=input('haga su pregunta: ','s');
haga su pregunta: que es la matemática
A = que es la matemática
>> A=input('ingrese su edad:\n');
ingrese su edad:
45
>> A=input('Estado civil:\n','s');
Estado civil:
Soltero

COMANDOS DE SALIDA DE DATOS


La salida en pantalla de los resultados de un programa se hace de diferentes maneras.
Algunos se realizan por defecto como el resultado de alguna operación. Otra opción es
con los comandos:
disp fprintf
Comando disp
El formato de disp es:
disp(‘comentario’)
disp(variable)
en el primer caso la salida es algún comentario, en el segundo se imprime en pantalla
una variable.

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
01. Archivos m. Lic. Amado Malca Villalobos

La matriz buscada es:


>> disp(A)
1 7 -2
4 -5 6
8 5 -9
>> B=[1 7 -2]
B = 1 7 -2
>> disp(['la matriz buscada es:',num2str(B)])
la matriz buscada es:1 7 -2
>>

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 ','matemática ','es ','la ','madre ','de ','todas ','las ','ciencias'])
La matemática es la madre de todas las ciencias
>> disp(['La','matematica','es','la','madre','de','todas','las','ciencias'])
Lamatematicaeslamadredetodaslasciencias
>> disp(['La ','matemática ','es ','la ','madre ','de ','todas ','las ','ciencias'])
La matemática 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 línea de los comandos las palabras debían tener la misma longitud, de 10
letras, incluyendo espacios.

04 archivos .m 10
01. Archivos m. Lic. Amado Malca Villalobos

Ejemplo: En este programa hallaremos el promedio de los primeros 20 enteros


positivos múltiplos de 5.
Solución:
prommult5.m
% en el ejemplo se crea un vector
% con los 20 primeros múltiplos de 5
% y luego se halla el promedio de ellos
r=[1:20];
z=5*r;
disp('Los veinte múltiplos de 5, son:')
disp(z)
disp(' ')
disp('el valor promedio es')
prom=sum(z)/norm(z);
disp(prom)
Ejecución en MatLab:
>> prommult5
Los veinte múltiplos de 5, son:
Columns 1 through 12
5 10 15 20 25 30 35 40 45 50 55 60
Columns 13 through 20
65 70 75 80 85 90 95 100

el valor promedio es
3.9199
>>

Ejemplo: Mostrar una tabla con los n primeros enteros positivos, sus cuadrados y sus
cubos.
Solución:
ejemplo4_2.m
% Este programa crea una tabla de los
primeros n números 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)
Ejecución 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
01. 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 algún formato a la presentación de los datos.
Visualizando mensajes de texto:
fprintf(‘Mensaje en forma de cadena’)

prog01.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 relación de
cuadrado y cubos')

Ahora viene la ejecución, en la ventana de comandos


de Matlab:
>> prog01
n n^2 n^3
1 1 1
2 4 8
3 9 27

ahi tenemos la relación de cuadrado y cubos >>

Caracteres especiales usados


Símbolo Descripción
\n Carácter de escape, se empieza una nueva línea.
\b Carácter de borrado
\t Tabulación horizontal

Ahí va un ejemplo de uso de estos caracteres especiales,


escribiremos:
Las matrices, son el objeto fundamental del MatLab
>> fprintf('Las matrices,\n son el objeto fund\bamen\btal
del Mat\t\tlab\n');
Las matrices,
son el objeto funametal del Mat lab
>>

04 archivos .m 12
01. Archivos m. Lic. Amado Malca Villalobos

El comando fprintf para la visualización de datos y texto juntos


fprintf(‘Texto %-5.2f texto adicional’, nombre_variable)

Los elementos del formato para los datos, son cuatro algunos opcionales otros
obligatorios: -5.2f
El primero llamado flag o bandera (opcional)
Símbolo Descripción
- Justificación izquierda dentro del campo
+ Visualiza el carácter del signo (+ ó -) delante del
numero
0 Añade ceros si el numero es más pequeño que
el campo

Lo segundo es el ancho del campo, que corresponde al primer número (5 en el


ejemplo),el cual nos indica el menor número de dígitos de la visualización. (Opcional)

El tercero es corresponde a la precisión, lo cual indica el numero de dígitos que se


mostraran a la derecha del punto decimal. (Opcional)

El cuarto elemento es el que corresponde al formato de conversión (f en el ejemplo).


Es obligatorio, las opciones son:
Símbolo Descripción
e Notación exponencial en minúsculas (ej:
2.456e+002)
E Notación exponencial en mayúsculas (ej:
2.456E+002)
f Notación de punto fijo (ej: 245.6)
g Representación en formato corto de e o f
G Representación en formato corto de E o f
i Entero
Ejemplo:
ej03.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]
P=mean(D)
fprintf('\nEl valor medio de las lluvias es %6.2e mensual.\n',P)
fprintf('\nEl valor medio de las lluvias es %-16.2f mensual.\n',P)
fprintf('\nEl valor medio de las lluvias es %08i mensual.\n',P)
fprintf('\nEl valor medio de las lluvias es %6g mensual.\n',P)
La ejecución en MatLab
>> ej03
D = 286 253 254 305 274 203 165 190 161 228 224

04 archivos .m 13
01. 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 numéricos, 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 mínimo es %4i , el máximo es %4i y el total de
lluvias es %6i.\n',m,M,S)

La ejecución 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.

El valor mínimo es 161 , el máximo es 305 y el total de lluvias es


2823.
>>

Presentación de arrays (Matrices)


ej05.m
%ahora presentaremos una matriz
%donde
%fila uno: números naturales
%fila dos: el cuadrado
%fila tres: la raíz cuadrada
x=[1:8];
y=x.^2;
z=sqrt(x);
w=[x;y;z]
fprintf('el numero %i su cuadrado %i su raíz %f\n',w)
La ejecución en MatLab

04 archivos .m 14
01. Archivos m. Lic. Amado Malca Villalobos

>> ej05
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 raíz 1.000000
el numero 2 su cuadrado 4 su raíz 1.414214
el numero 3 su cuadrado 9 su raíz 1.732051
el numero 4 su cuadrado 16 su raíz 2.000000
el numero 5 su cuadrado 25 su raíz 2.236068
el numero 6 su cuadrado 36 su raíz 2.449490
el numero 7 su cuadrado 49 su raíz 2.645751
el numero 8 su cuadrado 64 su raíz 2.828427
>>

Ejemplo adicional
ejem06.m
% archivo ejecutable de nombre: ejem06.m
% uso de los comandos de entrada por teclado, y salida por
pantalla.

nombre=input('cual es tu nombre: ','s');


apellidos=input('tus apellidos son:\n','s');
n=input('de que orden son las matrices cuadradas A y B:\n');

A=input('ingrese la matriz A :\n')


B=input('ingrese la matriz B :\n')
disp('la suma A+B, la resta A-B es :')
disp(A+B),disp(A-B)
disp('El producto A*B, la division A/B es :')
disp(A*B),disp(A/B)

temp=[25.6 33.7 34.1 35.6 36.8]


fprintf('la temperatura en la mañana es %e grados F \n',temp)
fprintf('la temperatura en la mañana es %f grados F \n',temp)
fprintf('la temperatura en la mañana es %g grados F \n',temp)
fprintf('la temperatura en la mañana es \n %g grados F \n',temp)

w=[1:10;sqrt(1:10)]
fprintf('Un entero es %g y su raíz 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
01. 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 ejecución en Matlab
>> ejem06
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

0.0698 0.3101 0.3101 -0.1240


1.1395 0.6202 -0.3798 -1.2481
0.5814 -0.1938 0.8062 0.0775
0.0504 -0.0724 0.2610 0.9289

temp = 25.6000 33.7000 34.1000 35.6000 36.8000

la temperatura en la mañana es 2.560000e+001 grados F


la temperatura en la mañana es 3.370000e+001 grados F
la temperatura en la mañana es 3.410000e+001 grados F
la temperatura en la mañana es 3.560000e+001 grados F
la temperatura en la mañana es 3.680000e+001 grados F
la temperatura en la mañana es 25.600000 grados F
la temperatura en la mañana es 33.700000 grados F

04 archivos .m 16
01. Archivos m. Lic. Amado Malca Villalobos

la temperatura en la mañana es 34.100000 grados F


la temperatura en la mañana es 35.600000 grados F
la temperatura en la mañana es 36.800000 grados F
la temperatura en la mañana es 25.6 grados F
la temperatura en la mañana es 33.7 grados F
la temperatura en la mañana es 34.1 grados F
la temperatura en la mañana es 35.6 grados F
la temperatura en la mañana es 36.8 grados F
la temperatura en la mañana es
25.6 grados F
la temperatura en la mañana es
33.7 grados F
la temperatura en la mañana es
34.1 grados F
la temperatura en la mañana es
35.6 grados F
la temperatura en la mañana es
36.8 grados F

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

1.0000 1.4142 1.7321 2.0000 2.2361 2.4495 2.6458


2.8284 3.0000 3.1623

Un entero es 1 y su raíz cuadrada es 1


Un entero es 2 y su raíz cuadrada es 1.41421
Un entero es 3 y su raíz cuadrada es 1.73205
Un entero es 4 y su raíz cuadrada es 2
Un entero es 5 y su raíz cuadrada es 2.23607
Un entero es 6 y su raíz cuadrada es 2.44949
Un entero es 7 y su raíz cuadrada es 2.64575
Un entero es 8 y su raíz cuadrada es 2.82843
Un entero es 9 y su raíz cuadrada es 3
Un entero es 10 y su raíz cuadrada es 3.16228

z = 1.0e+003 *

0.0010 0.0020 0.0030 0.0040 0.0050 0.0060 0.0070


0.0080 0.0090 0.0100
0.0010 0.0014 0.0017 0.0020 0.0022 0.0024 0.0026
0.0028 0.0030 0.0032
0.0010 0.0040 0.0090 0.0160 0.0250 0.0360 0.0490
0.0640 0.0810 0.1000
0.0010 0.0080 0.0270 0.0640 0.1250 0.2160 0.3430
0.5120 0.7290 1.0000

n=1 sqrt(n)=1 n^2=1 n^3=1


n=2 sqrt(n)=1.41421 n^2=4 n^3=8

04 archivos .m 17
01. Archivos m. Lic. Amado Malca Villalobos

n=3 sqrt(n)=1.73205 n^2=9 n^3=27


n=4 sqrt(n)=2 n^2=16 n^3=64
n=5 sqrt(n)=2.23607 n^2=25 n^3=125
n=6 sqrt(n)=2.44949 n^2=36 n^3=216
n=7 sqrt(n)=2.64575 n^2=49 n^3=343
n=8 sqrt(n)=2.82843 n^2=64 n^3=512
n=9 sqrt(n)=3 n^2=81 n^3=729
n=10 sqrt(n)=3.16228 n^2=100 n^3=1000

z = 1.0e+006 *

1.0006 1.0006 1.0006 1.0006 1.0006 1.0006


0.0010 0.0010 0.0010 0.0010 0.0010 0.0010

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
>>

IMPORTACION Y EXPORTACION DE DATOS


Procesando datos de fuentes externas (Importación)
Escribiendo datos en un manejador de datos (Exportación)

DE EXCEL A MATLAB (xlsread)


Importando datos desde Excel a Matlab.

Para esto contamos con un comando llamado xlsread y su sintaxis es:

04 archivos .m 18
01. Archivos m. Lic. Amado Malca Villalobos

xlsread (' NombreArchivo ')

[num, text ] = xlsread ( NombreArchivo, Hoja, Rango)

donde:
num: Es una matriz de tipo numérico en el cual serán guardados todos los datos
numéricos 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 parámetro debe ser una
cadena.
Ejemplo: Ahora se leerá un archivo en Excel, llamado datos.xlsx

Aquí vemos una hoja de datos en formato Excel


datos1.xlsx

Leyendo ahora con el comando xlsread


>> [A,B]=xlsread('datos.xlsx')
A=
1 2 3 4 5 6 7
180 156 147 206 210 235 222
NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN
1 2 3 4 5 6 7
1 4 9 16 25 36 49
1 8 27 64 125 216 343
B=
'Mes'
'LLuvia'
''

04 archivos .m 19
01. Archivos m. Lic. Amado Malca Villalobos

''
'numero'
'cuadrado'
'cubo'
>>
Leyendo por separado la información
>> [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
>>

DE MATLAB A EXCEL (xlswrite)


Esta vez veremos cómo exportar datos desde MatLab a una hoja de datos de Excel.

Lo primero que debemos conocer es la función y la sintaxis necesaria para realizar esta
operación; Esta se llama xlswrite y su sintaxis es la siguiente:
xlswrite( NombreArchivo, Datos )

04 archivos .m 20
01. Archivos m. Lic. Amado Malca Villalobos

[estado] = xlswrite( NombreArchivo, Datos, Hoja, CeldaInicial )

Donde:
Estado= regresa 1 cuando la operación 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 parámetro debe ser una cadena.
Datos: Son los datos que se escribirán en el archivo, pueden ser numéricos o
caracteres.
Hoja: Es la hoja en la que se escribirá, por default Hoja1, este parámetro debe ser una
cadena.
CeldaInicial: A partir de esta se empezara la escritura de los datos, este parámetro
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
01. Archivos m. Lic. Amado Malca Villalobos

Ejemplo: Ahora la matriz A se grabara en un archivo llamado “arch_datos2.xlsx”, en la


hoja llamada “matriz” en los rangos especificados
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
>> [estado]=xlswrite('arch_datos2.xlsx',A,'matriz','C1:E3')
Warning: Added specified worksheet.
> In xlswrite>activate_sheet at 294
In xlswrite>ExecuteWrite at 249
In xlswrite at 207
estado = 1
>> [estado]=xlswrite('arch_datos2.xlsx',A,'matriz','A5:C7')
estado = 1
Archivo en la PC, en la carpeta de trabajo de MatLab

Archivo de excel

04 archivos .m 22
01. 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 ejecución 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
>>

Los términos de la sucesión de Fibonacci


Fib1.m
function f = Fib1(n)
% Retorna el n-esimo numero
% de la Sucesion de Fibonacci.
% 1, 1, 2, 3, 5, 8, . . .
% F(1)=1, F(2)=1,
% F(n+2)=F(n+1)+F(n), si n entero
positivo

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 ejecución en Matlab

04 archivos .m 23
01. Archivos m. Lic. Amado Malca Villalobos

>> help Fib1


Retorna el n-esimo numero
de la Sucesion de Fibonacci.
1, 1, 2, 3, 5, 8, . . .
F(1)=1, F(2)=1,
F(n+2)=F(n+1)+F(n), si n entero positivo
>> Fib1(1)
ans = 1
>> Fib1(11)
ans = 89
>> Fib1(-11)
??? Attempted to access F(-11); index must be a positive
integer or logical.
Error in ==> Fib1 at 14
f = F(n);
>> Fib1(16)
ans = 987
>>

Los términos de la sucesión de Fibonacci


Fib2.m
function f = Fib2(n)
% Retorna el n-esimo termino
% de la sucesion de Fibonacci.
if n==1
f = 1;
elseif n==2
f = 1;
else
f1 = 1; f2 = 1;
for i = 2:n-1
f = f1 + f2;
f1=f2; f2 = f;
end
end
La ejecución en Matlab
>> Fib2(4)
ans = 3
>> Fib2(40)
ans = 102334155
>>

Los términos de la sucesión de Fibonacci con matrices


Fib3.m
function f = Fib3(n)
% Retorna los terminos de la

04 archivos .m 24
01. 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 ejecución en Matlab
>> Fib3(6)
ans = 8
>> Fib3(16)
ans = 987
>>

Promedio de un arreglo de numeros


promedio.m
function p = promedio(x)
% Calcula el promedio de los elementos
de un vector x
% y dibuja dicho vector, ploteando
% Sintaxis : promedio(x) donde x es el
vector a promediar
n=length(x);
p=0;
for i=1:n
p=p+x(i);
end
p=p/n;
plot(x);
La ejecución en Matlab
>> x=[3 4 8 2 7 10 18 45 78 3 2 9]
x = 3 4 8 2 7 10 18 45 78 3 2 9
>> promedio(x)
ans = 15.7500
>>
La grafica de los valores de x
80

70

60

50

40

30

20

10

0
0 2 4 6 8 10 12

04 archivos .m 25
01. Archivos m. Lic. Amado Malca Villalobos

1. FICHEROS SCRIPT
PROBLEMAS
Nota: Además de los problemas que se proponen a continuación, todos los problemas
del acápite anterior se pueden resolver también utilizando ficheros script.
Los siguientes problemas deben ser resueltos creando un programa en un fichero
script y posteriormente ejecutándolo en la ventana de comandos.

1. Se ha diseñado sobre papel una copa cónica que tiene un volumen de 250 cm3.
Determine el radio r de la base y el área de la superficie S de este diseño para una
serie de distintos bocetos de copas que tienen de altura h de 5, 6, 7, 8 y 9 cm.
El cálculo del volumen V y el área superficial vienen dados por las formulas:
1 2
V= pr h S = p r r 2 + h2
3

r
x

24 pies
h
q q
6 pies

2. En un cine, el ángulo q a partir del cual un espectador ve la película depende de la
distancia x del espectador a la pantalla. Para un cine de las dimensiones como las que
se muestran en la figura adjunta, calcule el ángulo q (en grados) para los espectadores
que están sentados a distancias de 30, 45, 60, 75 y 90 pies de la pantalla.
3. La población de un determinado país es de 50 millones, cantidad que se duplicara
previsiblemente en 20 años. Calcule la población en 5, 10 y 15 años definiendo un
vector t con tres elementos y utilizando operaciones elemento a elemento para el
cálculo. El crecimiento de la población se puede modelar mediante la ecuación
P = P0 2t / d , donde P es la población en el instante t, P0 es la población en el instante t =
0 y d es el doble del tiempo.
4. Un excursionista necesita cruzar un área arenosa para poder ir del punto A a un
campamento que se encuentra en el punto B. Para hacer esto puede cruzar una zona
arenosa perpendicularmente al camino y a continuación andar a lo largo de el, o
también puede cruzar la zona arenosa con un ángulo q hasta el camino, y luego
caminar a lo largo del camino. El excursionista camina a una velocidad de 3,5 km/h en
la arena, y a 5 km/h por el camino. Calcule el tiempo que le lleva alcanzar el
campamento contemplando distintos ángulos q de 0, 10, 20, 30, 40, 50 y 60 grados.
Las distancias w y u son, respectivamente, w = 4,5 km, y u = 14 km. Escriba un
programa en un fichero script que resuelva este problema. Calcule todas las variables
dentro del fichero script. Visualice los resultados en una tabla de dos columnas en la
cual la primera columna sea q y la segunda columna sea el tiempo t correspondiente.

04 archivos .m 26
01. Archivos m. Lic. Amado Malca Villalobos

u
B

w
q

A
5. Escriba un fichero script que calcule el balance de una cuenta de ahorros al final del
año, durante 10 años. La cuenta tiene un capital inicial de $ 1000 y un interés de 6,5%
que produce beneficios anualmente. Visualice la información en una tabla.
Para un capital inicial A, y una tasa de interés r, el balance B, después de n años, viene
𝑟 𝑛
dado por la expresión: 𝐵 = 𝐴 (1 + 100)
6. La velocidad v y la distancia d, en función del tiempo, de un coche que tiene una
aceleracion constante a, vienen dados por: v (t )= at y d (t ) = 1 at 2
2
Determine v y d para cada segundo, durante 10 segundos, para un coche con una
aceleración a = 1,55 m/s2. Muestre los resultados en una tabla de tres columnas en la
cual la primera sea el tiempo (s), la segunda sea la distancia (m) y en la tercera la
velocidad (m/s).
7. Cuando se conectan diferentes resistencias en paralelo en un circuito eléctrico, la
corriente a través de cada una de estas resistencias viene dada por: in = vs / Rn donde in
y Rn representan la intensidad de corriente a través de la resistencia n y su valor de
resistencia propiamente dicho, siendo vs el potencial de la fuente. La resistencia
equivalente, Req , en este caso, se puede calcular a partir de la expresión:
1 1 1 1
= + +L +
Req R1 R2 Rn
La intensidad de la corriente de la fuente viene dada por is = vs / Re q , y la potencia Pn ,
disipada por cada resistencia vienen dada por: Pn = vsin .
Escriba un programa, utilizando un fichero script, que calcule la corriente que pasa por
cada resistencia, asi como la potencia disipada por cada una, en un circuito como el
que se muestra en la figura con resistencias colocadas en paralelo. Cuando el fichero
script se ejecute, este debe pedir al usuario que introduzca el voltaje de la fuente, y
después, en un vector, los valores correspondientes a las resistencias. El programa
debe mostrar en una tabla las resistencias en la primera columna, la corriente que
pasa por cada una de ellas en la segunda, y la potencia que disipan en la tercera
columna. Después, el programa debe mostrar también la intensidad de corriente de la
fuente y al potencia total del circuito.
45 
34 
20 

26 

60 

10 

+
Vs = 48 V -

04 archivos .m 27
01. Archivos m. Lic. Amado Malca Villalobos

8. La grafica de la función f (x)= ax3 + bx2 + cx + d pasa por los puntos (-2, -3.4), (-0.5,
5.525), (1, 16.7) y (2.5, 70.625). Calcule las constantes a, b, c y d escribiendo para
ello un sistema de ecuaciones con cuatro incógnitas, utilizando posteriormente
MATLAB para resolver el sistema.
9. Cuando se llevan cálculos de estructuras es habitual trabajar con sistemas como el
que se muestra en la figura adjunta, consistente en una estructura compuesta de
miembros o elementos encadenados unos con otros por sus extremos, y donde lo que
se trata es determinar las fuerzas que inciden sobre cada elemento. Para la estructura
que se muestra en la figura adjunta, las fuerzas de los siete miembros vienen
determinadas por las siguientes siete ecuaciones:
F1sen (36,87º)= - 2000 Fcos
1 (36,87º)+ F2 = 0
F3 + F1sen (36,87º)= 0 F4 - F1 cos (36,87º)= 0
- F3 - F5 sen (36,87º)= 3000 F6 + F5 cos (36,87º)- F2 = 0
F5 sen(36,87º)+ F7 = 0
Escribe las ecuaciones en forma matricial y utilice MATLAB para calcular las fuerzas de
los elementos de esta estructura. Una fuerza positiva implica una fuerza de tensión,
mientras que una fuerza negativa implica una fuerza de comprensión. Visualice los
resultados en una tabla.
2000 N 3000 N

2 6
o o o
36,87º 36,87º
3 5 7
1
4
o o

04 archivos .m 28