Académique Documents
Professionnel Documents
Culture Documents
1.1 SEÑALES
En este capítulo el estudiante se centrará en la utilización del producto de software Octave y para
construir el código de los programas que van a ser utilizados en los subsiguientes laboratorios. Se
profundizará en algunos de los temas, especialmente en lo relacionado con el manejo de archivos
y con la programación de funciones.
1.2 OBJETIVO
Desarrollar códigos de programas utilizando los comandos e instrucciones del Octave V4.2,
ejecutando los ejercicios propuestos orientados al procesamiento de señales.
1.5 GENERALIDADES
Para iniciar los trabajos, en este caso con Octave que es uno de varios productos de
software para trabajar con modelos matemáticos, debe iniciarse la PC con la versión disponible e
instalada (V4.2). Seguidamente buscar en la pantalla el icono correspondiente en el
escritorio de Windows, ubicarse sobre él con el ratón y luego presionar dos veces el
botón izquierdo. Al abrirse la pantalla del Octave, en la Ventana de Comandos
(Command Window) se muestra el símbolo “ >> ” (prompt) que nos indica que la
pantalla de comandos está a la espera de nuestras instrucciones. Para salir de Octave basta teclear
exit o quit y para ejecutar cualquier instrucción presionar la tecla Enter. Se debe tener en cuenta
que una instrucción termina al cambiar de línea. Si necesitamos escribir más de una línea en el
Editor, debemos escribir el símbolo “...” (tres puntos) al final de la misma y continuar en la
siguiente línea. Si lo que queremos es escribir varias instrucciones dentro de la misma línea se
debe separar con comas o punto y coma.
El producto de software Octave tiene implementada una serie de funciones matemáticas más
utilizadas, las cuales suelen admitir argumentos escalares y vectoriales. Además, maneja números
complejos y utiliza indistintamente la i y la j para representar un número imaginario.
Conviene precisar que los paréntesis “ ( ) ” y corchetes “ [ ] ” tienen significados diferentes en
Octave. La primera, se utiliza para construir y evaluar funciones y la segunda, para definir
vectores o matrices.
El comando help permite obtener ayuda de las distintas funciones que Octave tiene
implementada. Por ejemplo:
Ejercicio 1.1
>>1.2*sin(40*pi/180 + log(2.4^2))
>>sqrt(3^2+4^2)-5
>>abs(3-j*5)
Ejercicio 1.2
Evalúe la expresión: tan t 2 2sen 1 , para t = 0.5, 0.95 y 1.
8
Ejecute los comandos clock, date y calendar. Interprete las respuestas proporcionadas por
Octave y limpie luego la pantalla.
Para visualizar los resultados en la pantalla de comandos, se tienen varias posibilidades, aunque
por defecto, los números en pantalla se representan con redondeo de cuatro cifras decimales.
También decide si representa un número en notación convencional (coma fija) o notación
científica (coma flotante). Los números enteros que tengan menos de nueve cifras siempre se
representan con coma fija. El comando para la representación en pantalla es format y admite,
entre otras, las opciones siguientes:
Ejercicio 1.4
>> sqrt(pi)
>> format short, sqrt(pi)
>> format long e, sqrt(pi)
>> format short e, sqrt(pi)
Ejercicio 1.5
1.5.2 Variables
Una variable es un símbolo que se asigna temporalmente a un dato. La forma de definir una
variable cualquiera es “variable = expresión”.
Por ejemplo:
>> x=7*pi
Para saber el valor actual de una variable sólo hay que escribirla y presionar la tecla Enter. El
resultado o respuesta de ejecutar cualquier expresión matemática se guarda, por defecto en una
variable denominada ans, que sale inmediatamente en la pantalla de comandos y que toma como
valor el correspondiente resultado. Si deseamos que esta variable no aparezca en pantalla, basta
escribir al final de la expresión el símbolo “ ; ” (punto y coma).
Ejercicio 1.6
2 3 11 e
Crear dos variables que almacenen los valores:
4 tanh 2
,
log 2 cos 2 2 / 3
y calcule la suma y producto de ambas variables.
FLAVIO N. CARRILLO GOMERO - 2017 3
Ejercicio 1.7
Consulte la ayuda sobre la variable predeterminada j y/o i y calcule j2. Luego, defina la variable j
como dos y vuelva a calcular j2. ¿Qué regla práctica debe obtenerse?
Con este entorno de trabajo se puede llamar a una gran variedad de funciones, tanto
propias como programadas por los usuarios. Nos ofrece un desplegable para el directorio
actual y una ventana que permite acceder al árbol de directorios de la Pc.
1.6.4 Editor/Debbuger
En Octave tienen particular importancia los M-archivos, esto es, archivos con la extensión
“*.m”, son archivos de texto ASCII que contienen un conjunto de comandos de Octave. La
importancia de estos archivos es que al escribir su nombre en la línea de comandos de Octave y
presionar Enter, se ejecutan todos los comandos contenidos en dicho archivo.
Octave dispone de un editor propio que permite tanto crear y modificar estos archivos
(proceso de edición-Editor), como ejecutarlos paso a paso para detectar errores (proceso de
depuración-Debugger).
1.6.5 Workspace
En Octave se trabaja fundamentalmente con matrices y para el caso de los números estas son
consideradas como matrices cuadradas de orden uno.
• Escribir la matriz entre corchetes, colocando las filas una a continuación de otra,
separadas por el símbolo ¨ ; ¨. Entre los elementos de una misma fila podemos
colocar una coma o dejar un espacio en blanco.
• Escribir la matriz entre corchetes, colocando cada fila en un renglón.
• La matriz vacía se representa por [ ].
Como es natural, si sólo introducimos una fila tenemos un vector fila. Octave incluye una orden
muy útil para generar vectores cuyas coordenadas están en progresión aritmética. Es decir, la
estructura a:b:c crea un vector entre los números a y c, incrementando cada coordenada con el
número b. Si sólo se escribe a:c se considera por defecto que b es igual a uno.
Ejercicio 1.8
Construya tres vectores cuyos elementos estén contenidos en el intervalo [-1,1] en cuatro, ocho y
veinte subintervalos iguales. Luego, con las tres primeras coordenadas de cada uno de ellos,
genere las tres filas de una matriz de 3 × 3 y calcule el determinante de dicha matriz y su
traspuesta.
Ejercicio 1.9
Considere la matriz cuadrada de 4 x 4
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
Utilizando el comando sum, explique la razón de por qué se le denomina matriz mágica.
Para seleccionar un elemento determinado de una matriz se escribe el nombre de la matriz seguida
del número de fila y columna separados por una coma y entre paréntesis.
Si se desea extraer una submatriz basta colocar, en vez de números, vectores cuyos componentes
son los números de las correspondientes filas y columnas. El símbolo dos puntos es muy útil para
crear submatrices. Cuando no se le asignan valores a la derecha e izquierda, por defecto, recorre
todas las filas o columnas. Si colocamos datos fuera del rango actual de una matriz se rellenan
con ceros las zonas no especificadas.
Ejercicio 1.10
Obtenga de cuatro maneras diferentes la submatriz formada por la segunda y la tercera fila de la
siguiente matriz:
>> A = [1 1 1 1;1 2 2 2 ;1 2 3 3 ;1 2 3 4]
>> A(2:3,1:4)
>> A(2:3,:)
>> A([2 3],[1 2 3 4])
>> A([1 4],:)=[]
Ejercicio 1.11
Defina una matriz A cuadrada de orden 15 tal que todos sus elementos sean nulos, salvo la primera
fila y la primera columna, las cuales toman los valores, respectivamente de la columna o fila en
la que se encuentran.
Ejercicio 1.12
La ventana gráfica de Octave. Para mostrar las correspondientes gráficas, abre una nueva ventana,
la denominada ventana de figura. Si ya hubiera una ventana de figura, se borra la ventana de figura
actual y se dibuja en ella la nueva gráfica. Para utilizar dos o más gráficas en diferentes ventanas
de figura, se usa el comando figure. El comando figure(n) muestra o crea, si no la hay, la
ventana de la figura n-ésima y ésta pasa a ser la ventana de figura activa. La orden close cierra
la ventana gráfica activa.
Para obtener gráficas 2-D, Octave admite cuatro opciones: gráficas en coordenadas cartesianas,
gráficas en coordenadas polares, gráficas de barras y gráficas de escaleras. El comando para
representar datos bidimensionales en coordenadas cartesianas es plot, para crear gráficas en
coordenadas polares es polar y, finalmente, los gráficos de barras y escaleras se generan usando
los comandos bar y stairs, respectivamente.
El comando plot escala los ejes para ajustar los datos, representa los puntos y a continuación
conecta los puntos con una línea recta. También añade una escala numérica y coloca de forma
automática marcas en ambos ejes. Conviene aclarar que lo primero que se hace al ejecutar el
comando plot es eliminar toda la información (líneas, ejes,...) sobre la gráfica anterior, si la
hubiere.
Ejercicio 1.13
Dibuje la gráfica de la función exponencial en el intervalo [-3,3].
Obtenga una segunda gráfica donde a la curva anterior se le añada la recta tangente en x = 0.
Ejercicio 1.15
Ejercicio 1.16
Dibuje un polígono regular de 10 lados que pueda inscribirse en una circunferencia de radio uno.
(Indicación: Evalue plot sobre un vector cuyas componentes sean números complejos).
Para obtener gráficas 3-D, Octave admite tres opciones: gráficas de líneas, gráficas de superficies
y gráficas de contorno. El comando básico para realizar gráficas de líneas es plot3, los comandos
para gráficas de superficies son mesh y surf y, finalmente, para gráficas de contorno es
contour.
Ejercicio 1.17
>> x=[0:pi/20:6*pi];
>> plot3(cos(x),sin(x),x,’r’)
Ejercicio 1.18
Una forma alternativa de obtener el vector anterior x es usar el comando linspace. Mediante la
instrucción help linspace escrita en la pantalla de comandos, obtener mayor información
sobre la operación de esta función y del nuevo vector.
Ejercicio 1.19
La idea es dibujar una función de dos variables sobre un dominio rectangular. Supongamos que x
e y son dos vectores que contienen las coordenadas en una y otra dirección de la retícula sobre la
que se va a dibujar la función. Se inicia generando dos matrices X (cuyas filas son copias de x) e
Y (cuyas columnas son copias de y) con el comando meshgrid, las cuales representan las
coordenadas de todos los puntos del reticulado. Posteriormente, se calcula la matriz gráfica de
datos Z a partir de las matrices de coordenadas X e Y, teniendo en cuenta la función de que se
trate. Finalmente, la matriz Z se dibuja con el comando mesh o surf. Ambas órdenes dibujan la
función en perspectiva y la diferencia entre ellas está en el “llenado” de color de las células
generadas por el mallado.
z sen
x2 y 2 / x2 y 2
>> u=-8:0.5:8;v=u;
>> [U,V]=meshgrid(u,v);
>> r=sqrt(U.^2+V.^2)+eps;w=sin(r)./r;
>> mesh(w)
Ejercicio 1.21
En las versiones recientes de Octave, hay un grupo de funciones que permite realizar
gráficos de forma más sencilla. Ejemplos de ellas son ezplot y ezsurf.
Comentarios generales. Para trabajar con datos de gran tamaño, o bien para diseñar nuevas
funciones, es completamente imprescindible trabajar con archivos y, por lo tanto, con el editor de
texto. Los archivos adicionales que Octave utiliza básicamente son aquellos con extensión “*.m”
y una parte importante de cada sesión con Octave es crear y refinar este tipo de archivos.
Atendiendo a su uso, los M-archivos suelen dividirse en dos grandes grupos: archivos de
instrucciones o tipo script y archivos de funciones.
La pantalla del editor de programas facilita el trabajo con los M-archivos. Es decir, el editor
muestra con diferentes colores los diferentes tipos o elementos constituyentes de los comandos
(en verde los comentarios, en rojo las cadenas de caracteres, ...). Además, el editor verifica que
las comillas o paréntesis que se abran tengan el correspondiente elemento de cierre.
Para acceder al editor desde la ventana principal de Octave, basta presionar el menú File y después
New Script/ M-file (si se desea crear un archivo nuevo), o bien presionar el menú File y después
Open... (si se desea abrir un archivo ya existente). El manejo de esta nueva ventana es totalmente
intuitivo. Otra opción para abrir el editor es el comando edit.
Ejercicio 1.22
Abra un archivo utilizando el editor de Octave, escriba en él una matriz cuadrada de 2 x 2 y guarde
dicho archivo con el nombre “ejercicio122.m”.
Un M-archivo de este tipo consiste en una sucesión de instrucciones de Octave. Para ejecutarlas
y ver el correspondiente resultado en pantalla, es suficiente escribir el nombre del archivo (sin la
extensión) y presionar Enter. Las variables en un archivo de instrucciones son globales y, por lo
Los archivos de instrucciones son básicamente utilizados para introducir datos en matrices de
grandes dimensiones, pues en un archivo de este tipo es fácil corregir errores sin repetir todo el
trabajo.
Ejercicio 1.23
Escriba y guarde en un archivo de nombre “datos123.m” la matriz cuadrada de 20 x20 tal que los
elementos de su diagonal son todos iguales a 3 y las dos subdiagonales principales están formadas
por unos. Calcular su determinante.
Seguidamente cambie la diagonal por el vector cuyas coordenadas son los primeros diez números
naturales y vuelva a calcular el determinante de la nueva matriz.
Escribir en un archivo:
A=diag(3*ones(10,1));
A=A+diag(ones(9,1),1);
A=A+diag(ones(9,1),-1);
>> det(A)
Abrir ‘‘datos123.m’’
A=A-diag(3*ones(10,1));
A=A+diag(1:10);
>> det(A)
Los M-archivos de funciones son los que permiten incrementar la colección de funciones que
ejecuta Octave. Es decir, se pueden crear funciones específicas para algún problema concreto y,
a partir de su introducción, dichas funciones tienen el mismo rango que las funciones del sistema
y se ejecutan de igual forma. Las variables en los archivos de las funciones son locales, es decir,
no afectan a los valores de las variables que se hayan creado durante la sesión de trabajo.
Se recomienda que el nombre de un archivo de una función sea el nombre de la función seguido,
obviamente, de la extensión “.m”. La estructura de un archivo de este tipo es la siguiente: la
primera línea comienza con la orden de Octave function seguida del nombre de la función que
deseamos definir junto con los argumentos de entrada y salida separados por comas. Es decir:
A continuación, puede haber diversas líneas de comentario que han de estar precedidas
necesariamente por el símbolo “ % ”. Conviene decir que son precisamente estas líneas las que
aparecerán en pantalla al usar el comando help. Finalmente aparece el programa, es decir, las
instrucciones necesarias para poder evaluar la función.
Tanto los argumentos de entrada como los de salida no son obligatorios y, si no aparecen, no hace
falta escribir los correspondientes corchetes o paréntesis.
Diseñar una función que muestre la gráfica de una función cosenoidal atenuada exponencialmente
y(t) = exp(-0.05nt)cos(2πt) y cuyo argumento de entrada sea el factor de atenuación exponencial
n. La gráfica debe tener una malla y deben situarse los ejes de coordenadas.
Ejercicio 1.25
Diseñe una función que devuelva una función cosenoidal con frecuencia de 100 Hz., con
diferentes amplitudes y se grafique durante 30 milisegundos.
Ejercicio 1.26.
Dado x1(t)=2cos(2π20t) y x2(t)= x1(t) + 2.5cos(2π40t), diseñe una función que calcule y grafique
x2(t), muestre por lo menos 2 repeticiones. Luego, presentar el valor mínimo y máximo de x2(t).
1.9.1 for
for “variable”=“vector”
“instrucciones sobre la variable”
end
El significado es el siguiente: mientras la “variable” recorre los valores del “vector”, se realizan
las “instrucciones” descritas, con la “variable” tomando dichos valores. Octave permite anidar
varias órdenes for.
Ejercicio 1.27
xn1 x2n 2 xn , x0 4
Obtenga x1 , x15 y x50. Crear un archivo ‘‘iter.m’’:
function z=iter(n)
x=4;
for k=1:n
x=x^2-2*x;
end
z=x;
>> iter(1)
>> iter(15)
>> iter(50)
Ejercicio 1.28
Dada una matriz cuadrada de n x n, diseñe una función usando la instrucción for, que sume los
elementos de mayor módulo de cada una de las columnas de dicha matriz.
Ejercicio 1.29
Utilizando dos instrucciones for anidadas, genere la matriz cuadrada A, definida por
1.9.2 if
Ejercicio 1.30
Diseñe una función sobre los números enteros que asigna el valor 1 a los números pares y
positivos, el valor -1 a los números impares y positivos y el valor cero a los números restantes.
function paridad=paridad(n)
if n<=0
paridad=0;
elseif rem(n,2)==0
paridad=1;
else
paridad=-1;
end
Ejercicio 1.31
Escribir un código en Octave para hallar el valor máximo de x.
%
% Mimax: retorna el valor máximo de una matriz.
%
function valor_max=mimax(x)
Ejercicio 1.32
1.9.3 while
El significado de este esquema es que las instrucciones se irán ejecutando mientras la “relación
lógica” sea cierta.
Ejercicio 1.33
Ejercicio 1.34
Diseñar una función que muestre la gráfica de una función senoidal y(t) = cos(2πt + θ) para dos
periodos y cuyo argumento de entrada sea el número t. La gráfica debe tener una malla y deben
situarse los ejes de coordenadas.
% Verificacion de parámetros
if (or((length(mag)~=length(frec)), ...
(length(fase)~=length(frec))))
error('Error - frec, mag, y fase deben ser del mismo tamaño')
end
% Ir al siguiente valor de i
i=i+1;
end
xlabel('Tiempo (seg)');
Ejercicio 1.35
1 2
Un conocido resultado de L. Euler afirma que n
n 1
2
6
Obtenga el menor número de sumandos de la serie anterior, de modo que la correspondiente suma
finita aproxime π2/6 con un error menor o igual que 10-4 y que 10-6.
https://www.gnu.org/software/octave/