Tema 4 PROGRAMACIÓN EN MAT LAB
4.1 Introducción.
Es un lenguaje parecido al lenguaje C, que permite hacer programas.
4.2 Variables y operadores
Las variables se tratan como en un lenguaje de alto nivel, se maneja variables en
la RAM bajo un nombre y sin tipo.
En Lenguaje C
int a, b;
float x;
En PseInt
definir a, d Como Entero
En MAT LAB, el tipo NO ES NECESARIO.
Los operadores son:
Aritméticos : + - * /
rem mod (remainder, modulo: residuo)
Relacionales : < > <= >= == ~= (diferente)
Lógicos : & AND (conjunción)
| (alt + 124) OR (disyunción)
~ (alt+126) NOT (negación)
a = 5; if a == b
4.3 Sentencias de entrada y salida.
Entrada
variable = input('’Cadena de solicitud'’)
Nota: para ingresar una matriz debe delimitarse entre corchetes.
Salida
disp(variable arreglo)
fprintf(‘cadena de formato ‘, lista de variables)
>> a = 4+12
>> b = 123 / 19
>>fprintf(‘%d %7.2f’, a , 4+6);
4.4 Archivos .m
Es el programa o código fuente, donde se escriben las sentencias de ENTRADA,
PROCESO y SALIDA.
El formato es:
function nombrefuncion ()
clc;
disp(‘PROGRAMA DOBLE DE UN NUMERO’);
num = input(‘Ingresa num -> ‘);
doble = 2 * num ;
disp(doble);
end
Programa para ingresar DOS números y hallar la suma, producto y división.
function numeros
clc;
disp('SUMA PRODUCTO Y DIVISION');
num1 =input('Ingresa num1 -> ');
num2 =input('Ingresa num2 -> ');
sum = num1 + num2;
prod = num1 * num2;
cociente = num1 / num2;
% fprintf('%d %d %6.3f\n', sum, prod, cociente );
disp(sum);
disp(prod);
disp(cociente);
disp('Bye, bye ');
end
fprintf( ‘ %i %7.4f ’, cua, raiz ); \n \t (Secuencia de escape)
4.5 Estructuras de control.
Al igual que en la programación con un lenguaje de alto nivel, Mat Lab tiene
también una estructuración: Secuencial, Bifurcación y Repetición.
4.5.1Bifurcación simple.-
Sentencia if
if (condición)
sentenciasV
else
sentenciasF
end
function par()
clc;
disp(‘PAR o IMPAR’);
num = input(‘Ingrse num ->’);
res = rem(num,2);
disp( res);
if res ==0
disp(‘PAR’);
else
disp(‘Impar’);
end
4.5.2Bifurcación compuesta.-
Sentencia switch:
switch selector
case valor1,
sentencias1
case valor2,
sentencias2
otherwise,
sentencias por defecto
end
4.6 Estructura de repetición.-
4.6.1Sentencia for
for contador=valor inicial: [incremento : ] valor final
sentencias
end
4.6.2Sentencia break
Rompe la ejecución de un bucle, termine el bucle y salta a la .siguiente
instrucción después del bucle.
4.6.3Sentencia continue
Hace que el resto del bucle de repetición se ignore y se continúe con la siguiente
iteración.
Veamos algunos ejemplos:
1. Código para verificar si un número es par o impar.
2. Hacer un código para visualizar los números del 1 al 10.
3. Código para hacer la evaluación de la función y 2x 1
4.6.4Sentencia while
while condición
sentencias
end
4.7 Funciones en MatLab.
Como en todo lenguaje de programación, al definir una función, se tiene un
nombre, y los parámetros de entrada y salida hacia y desde la función:
a) Función que devuelve una sola variable.
La función a evaluar f x , donde x es un escalar, para evaluarla como vector o
matriz los operadores aritméticos deben ser de arreglos ( .* ./ .^)
Ejemplo: función y 2x 3 8
1 function [y] = cubica(x)
2 y = 2*x^3 - 8
b) Función que devuelve múltiples variables
function [ sum , prod] = admult( x, y, z )
sum = x + y;
prod = x * y;
end
En este caso se definen las variables de salida delimitados entre corchetes:
function [lista de variables de salida] = nomfuncion(lista de variable de
entrada)
Ejemplo: función que calcula la suma y el producto de dos números.
c) Llamada a una función
Una función construida se la invoca desde el entorno de MatLab u otra función,
si sólo devuelve un valor:
>> variable = funcion(parámetros)
Si devuelve dos ó más valores, las variables receptoras deben delimitarse entre
corchetes:
>> [variables receptoras] = funcion(parámetros de entrada)
Ejemplo: Hallar la media de un conjunto de datos en un vector.
4.7.1Funciones con número variable de parámetros de entrada.
Se utilizan las variables de MatLab: varargin y varargout, que indican que el
número de variables de entada será variable, así como las de salida.
4.8 Funciones en MatLab.
Veamos algunas funciones para el tratamiento de variables numéricas y de
cadena..
4.8.1Funciones de cadena.
size() determina la dimensión y longitud de la cadena
abs() devuelve números ASCII de los caracteres
setstr() convierte número en caracteres
isstr() detecta si una variable es una cadena de caracteres
strcmp() Comparación de cadenas (diferente en C), 1 iguales, 0
diferentes.
int2str() convierte un entero a cadena
num2str convierte un número real a cadena, con 4 decimales,
puede tener más decimales con un argumento opcional
sprintf() Convierte valores numéricos encadenas con un formato.
4.8.2Funciones de evaluación.
En ocasiones es necesario evaluar una función que está escrita en forma literal,
como cadena y no como expresión matemática.
eval(‘cadena’) Se evalúa la cadena como expresión
computacional matemática. La
cadena puede ser un comando, una
fórmula o en general una expresión
válida de MAT LAB
feval(‘nomfuncion’,argumentos) Evalúa dentro de una función otra
feval(‘sind’,30) función cuyo nombre se ha recibido
en la cadena con los argumentos.
Ejemplo:
>> eval(‘4+sin(pi)’)
>> feval(‘f’,5) // f nombre de la función, 5 es un valor de
entrada
4.9 Espacio de trabajo.
Denominado Explorador del espacio de trabajo (Workspace Browser), es un
área de memoria accesible desde la línea de comandos de MATLAB, se tienen
dos comandos:
who muestra una lista corta de las variables definidas
whos muestra la lista de variables, y además el tamaño que ocupan y la
información de cómo está almenada la variable:
clear borra todas las variables del espacio de trabajo de MATLAB:
clear variable borra la variable del espacio de trabajo de MATLAB:
4.10 Formatos de visualización de números.
4.11 Ejercicios.
Hacer la tabla de la suma
Aplicación: numero primo:
Descripción: Se ingresa un número n y luego se empieza a divide desde 1 hasta
n-1, y el algoritmo es el siguiente:
Algoritmo: Function NUMERO PRIMO COMPUESTO
Nombre primo
Parámetros Entrada x : numero entero
Salida p : numero entero
Variables d, c : divisor y contador
1) c=0
2) Para d=1 hsata x-1 hacer
Si mod(x,d)==0
c = c+1
Fin_si
Fin_d
3) Si c>2
p=0
sino
p=1
fin_si
Fin_Primo
Progr03: Ingresar un vector, y hallar el menor y mayor.
function arit2()
clc;
disp(‘ ’);
num = input(‘num -> ’);
cua = num*num;
raíz = sqrt( num );
disp( cua );
disp( raíz );
end
--------------------------------------------------------------------------------------
Ejercicios
Programa 1: diseñar un programa para ingresar un numero por teclado y obtener
el doble y su mitad.
a) COMO FUNCION:
function [ d , m ] = doble( NUM )
d = 2*num;
m = num /2;
end
a) Como programa:
function doblemit()
clc;
disp(‘DOBLE y MITAD de un NUMERO ‘);
numero = input(‘Ingrese numero = ’);
d = 2*num;
m = num /2;
fprintf(‘\nResultados \n\tdoble = %4d \n\tmitad = %6.2f ’, d, m);
disp(‘Bye bye …’);
end
SECUENCIA DE ESCAPE:
\n Salto de línea \t tabulador
Programa 2: Diseñar un programa para ingresar un numero y determinar si es
PAR O IMPAR.
function par()
clc:
disp(´NUMERO PAR o IMPAR´);
num = input(´Ingrese numero = ´);
par = mod(num, 2) == 0;
% impar = num mod 2 == 1;
if par then
disp(‘PAR’);
else
disp(‘Es impar ….’);
end
disp(´Bye bye…);
end
Programa 3: Diseñar un programa para ingresar un vector y hallar el menor, el
mayor y la suma de este vector.
Un programa para ingresar n número y hallar el menor y mayor.
function vector()
clc:
disp(´OPERACIONES CON VECTOR´);
V = input(´Ingrese Vector = ´);
menor = min( V);
mayor = man( V);
suma = sum( V );
fprintf(‘\n\tMenor = % 4d’, menor);
fprintf(‘\n\tMayor = % 4d’, mayor);
fprintf(‘\n\tSuma = % 4d’, suma);
disp(´Bye bye…);
end
num = 174
num mod 2 == 0
0
V
function evaluar()
clc:
disp(´Evaluar una expresion ´);
cad = input(´Ingrese expresión = ´);
resul = eval( cad );
fprintf(‘\n\tResult = % 7.2f’, resul);
fprintf(‘\n\tBye bye…);
end
>> eval(‘4+8-3’)
>> eval(‘ 4 + sqrt(5) ’)
JUEVES
Entrada de datos: input.
Proceso funciones:
Salida disp. Fprintf
Ejemplo 1. Ingresar por teclado dos números y visualizar el segundo número
tantas indique el primer número.
function repetir()
clc;
disp('VISUALIZAR UN NUMERO');
num1 = input('Ingresa num1 = ');
num2 = input('Ingresa num2 = '
for k=1: num1
fprintf('%d ', num2);
end
fprintf('\n');
disp('Hasta luego ...');
end
Ejemplo 2. Evaluar la función y = senx, para ángulos desde 0° hasta 45°.
Y = sen x 0<x<45
function funcionseno()
clc;
disp('VISUALIZAR tabla de Razon Seno');
%num1 = input('Ingresa num1 = ');
%num2 = input('Ingresa num2 = ');
for alfa=10: 30
x = alfa/180 * pi;
y = sin(x);
fprintf('\nsen(%i) = %7.3f ', alfa, y);
end
fprintf('\n');
disp('Hasta luego ...');
end
function funcionseno()
clc;
disp('VISUALIZAR tabla de Razon Seno');
%num1 = input('Ingresa num1 = ');
%num2 = input('Ingresa num2 = ');
for alfa=10: 49
y = sind(alfa);
z = cosd(alfa);
fprintf('\nsen(%i) = %7.3f \t cos(%i) = %7.3f ', alfa, y, alfa,z);
end
fprintf('\n');
disp('Hasta luego ...');
end