Vous êtes sur la page 1sur 13

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

(Universidad del Perú, DECANA DE AMERICA)


FACULTAD DE INGENIERIA ELECTRONICA Y ELECTRICA
E. P. INGENIERÍA ELECTRÓNICA
LABORATORIO DE PROCESAMIENTO DIGITAL DE SEÑALES

LABORATORIO NO.1: INTRODUCCIÓN A OCTAVE

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.3 EQUIPOS Y MATERIALES REQUERIDOS


El equipo de experimentación necesario para realizar el presente laboratorio es:
1. PC INTEL CORE i5 o superior.
2. Sistema Operativo Windows 10.

1.4 SOFTWARE REQUERIDO


El siguiente software es necesario para realizar este laboratorio:
1. Octave V4.2, https://www.gnu.org/software/octave/
2. Librerías y archivos de soporte.

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 cursor se desplaza y posiciona con las flechas izquierda/derecha , y para borrar


caracteres se puede utilizar las teclas Backspace o Delete. Otra opción muy útil es usar las flechas
arriba/abajo , para recuperar las instrucciones previas. Por lo tanto, se puede recuperar una
línea anterior de instrucciones, editarla y ejecutarla una vez revisada. Para limpiar completamente
la Ventana de Comandos se utiliza el comando clc, para borrar lo almacenado en el Espacio de
Trabajo (Workspace) se utiliza clear all, y para eliminar todas las figuras que no están ocultas,
FLAVIO N. CARRILLO GOMERO - 2017 1
close all. En la Fig. 1.1 se muestra la pantalla del Octave V4.2.1, donde se observa las diferentes
ventanas, como son: File Browser, Editor, Command Window, Workspace, Command History,
Editor y Documentation que se detalla en 1.6.

Fig. 1.1 Ventanas del entorno de trabajo del Octave V4.2.1.

1.5.1 Funciones implementadas en Octave.

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:

>> help fft

permite conocer la operación de la Transformada Rápida de Fourier.

Ejercicio 1.1

(a) Determine el logaritmo del arco tangente del seno de π/4.


(b) Compruebe que 3-4-5 son las dimensiones de las tres rectas que conforman un triángulo
rectángulo.
(c) Hallar la magnitud de 3-j5.

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

FLAVIO N. CARRILLO GOMERO - 2017 2


Ejercicio 1.3

Ejecute los comandos clock, date y calendar. Interprete las respuestas proporcionadas por
Octave y limpie luego la pantalla.

1.5.2 Formatos numéricos

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:

• format long : 16 dígitos.


• format short : 4 dígitos. Equivale a escribir sólo format.
• format long e : 16 dígitos más exponente.
• format short e : 4 dígitos más exponente.

Es importante comprender que Octave no cambia la representación interna de un número cuando


se escogen formatos diferentes, sólo modifica su visualización en pantalla.

Ejercicio 1.4

Escriba en los cuatro formatos anteriores la raíz cuadrada del número π.

>> sqrt(pi)
>> format short, sqrt(pi)
>> format long e, sqrt(pi)
>> format short e, sqrt(pi)

Ejercicio 1.5

Ejecute los comandos


realmax y realmin para conocer exactamente el rango de representacion de un número real
dentro del cual varían los números que maneja Octave.

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?

1.6 EL ENTORNO DE TRABAJO DE OCTAVE

1.6.1 El entorno de trabajo

La versión 4.2.1 de Octave es gráfica e intuitiva. Los principales componentes de dicho


entorno son el Explorador de Archivos (File Browser), la Ventana de Comandos (Command
Window)el Editor (Editor), Depurador de Errores (Debugger), el visualizador del Espacio de
Trabajo (Workspace) y el visor de la Historia de Comandos (Command History).

1.6.2 File Browser

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.3 El directorio actual

El concepto de directorio actual o de trabajo, es el directorio donde el usuario debe


guardar los diferentes archivos que genere en las sesiones, para que Octave pueda detectarlos.
Puede consultar el directorio en el que se encuentra con el comando pwd (print working
directory). El contenido de dicho directorio puede obtenerse con el comando dir o ls. Para
cambiar el directorio actual se utiliza el comando cd (Change Directory) seguido del nombre del
nuevo directorio. Ejecutando cd.. , se sube un nivel en la jerarquía de directorios.

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

El espacio de trabajo (Workspace) de Octave es el conjunto de variables que en un


determinado momento están definidas en la memoria del programa. Para obtener información
acerca del workspace, se pueden utilizar los comandos who y whos. La segunda proporciona una
información más detallada que la primera, así como copias completas de una sesión de trabajo.
Octave incorpora el comando diary para guardar sesiones completas de trabajo. Esta orden
puede ser de gran utilidad en el desarrollo de las clases prácticas, pues permite guardar en un
archivo de texto todos los resultados obtenidos en la sesión, los comentarios realizados en la clase
y en general, todo lo que el programa va presentando en pantalla.

La forma natural de proceder es la siguiente: se escribe diary nombre.txt. De esta


manera, se crea el archivo nombre.txt en el directorio actual y todo aquello que aparezca en
pantalla, a partir de ese momento, se graba en dicho archivo. Para que dejen de grabarse las
instrucciones que aparecen en pantalla hay que escribir diary off y para volver a abrir el
archivo diary on.

FLAVIO N. CARRILLO GOMERO - 2017 4


1.7 MATRICES Y VECTORES

1.7.1 Matrices y vectores

En Octave se trabaja fundamentalmente con matrices y para el caso de los números estas son
consideradas como matrices cuadradas de orden uno.

Las matrices pueden definirse de las siguientes formas:

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

>> u=-1:2/4:1, v=-1:2/8:1, w=-1:2/20:1


>> A=[-1.0,-0.50, 0.00
-1.0,-0.75,-0.50
-1.0,-0.90,-0.80]
>> B=A’
>> det(A), det(B)

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.

1.7.2 Direccionamiento y manipulación de matrices

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:

FLAVIO N. CARRILLO GOMERO - 2017 5


1 1 1 1
1 2 2 2 

1 2 3 3
 
1 2 3 4

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

Escriba las matrices A y B definidas por

A(i, j) = 10(i - j) + 1; i, j = 1, ..., 10.


1, i  j 1
B  i, j    , i, j  1,...., 20
0, en otro caso

1.8 GRÁFICAS EN OCTAVE

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.

1.8.1 Gráficas bidimensionales

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.

>> x=-3:0.01:3; y=exp(x); plot(x,y)


>> z= x+1; plot(x,y,x,z)
FLAVIO N. CARRILLO GOMERO - 2017 6
Ejercicio 1.14

Resuelva el ejercicio anterior usando el comando hold.

Ejercicio 1.15

Dibuje la gráfica de la elipse centrada en el origen y de semiejes 3 y 5.

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

1.8.2 Gráficas tridimensionales

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.

1.8.3 Gráficas de líneas

La función plot3 es análoga a su homóloga bidimensional plot. Su forma más sencilla es


plot3(x,y,z) la cual dibuja una línea que une los puntos (x(1),y(1),z(1)), (x(2),y(2),z(2)),
(x(3),y(3),z(3)), etc. , y se proyecta sobre un plano para poderla representar en pantalla.

Ejercicio 1.17

Dibuje en verde un tramo de una espiral cilíndrica.

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

Dibuje la curva alabeada de ecuaciones paramétricas:

x(t) = cos(t3), y = cos(t) sen(t), z = sen(t), t ∈ [−4π, 4π].

1.8.4 Gráficas de superficies

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.

FLAVIO N. CARRILLO GOMERO - 2017 7


Ejercicio 1.20

Dibuje en un cuadrado la función “sombrero”

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

Represente la superficie en paramétricas:

x = 4cos(r)sec(t), y = 2sen(r)sen(t), z = tan(t),

donde t ∈ [−π, π] y r ∈ [−2π, 2π].

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.

1.9 ARCHIVOS EN OCTAVE

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

Presionar: File → New → M-file


Escribir: A=[1 2; 2 1]
Presionar “ Guardar como ”
En “ Nombre de Archivo ” escribir “ ejercicio122.m”
Con la pestaña “Guardar en”, situarse en el directorio donde uno quiera almacenarlo y
presionar “Guardar”.

1.9.1 Archivos de instrucciones

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

FLAVIO N. CARRILLO GOMERO - 2017 8


tanto, pueden afectar a los valores de las variables que se hayan creado durante la sesión de
trabajo.

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

Guardar en ‘‘datos123.m’’. Ejecutar el archivo y escribir en Octave:

>> det(A)

Abrir ‘‘datos123.m’’

A=A-diag(3*ones(10,1));
A=A+diag(1:10);

Guardar ‘‘datos123.m’’. Ejecutar el archivo y escribir en Octave:

>> det(A)

1.9.2 Archivos de funciones

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:

function [argumentos de salida]=nombre de la función(argumentos


de entrada

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.

FLAVIO N. CARRILLO GOMERO - 2017 9


Ejercicio 1.24

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.

% GRAFICAR UNA SEÑAL COSENO ATENUADA EXPONENCIALMENTE


% Dado la constante n de atenuación
% Graficar una señal cosenoidal atenuada exponencialmente
%
% utilizar: cos_exp(n)
%
function cos_exp(n)
t=-2:0.01:2;
y=exp(-0.05*n*t).*cos(2*pi*t);
plot(t,y);grid;
axis([-2 2 -4 12]);
hold on
plot([-2.2 2.2],[0 0],'r', [0 0], [12 -4],'r');
grid;
hold off;

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 PROGRAMACIÓN EN OCTAVE

1.9.1 for

La sintaxis para la utilización de esta orden de control es

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

Diseñe una función que devuelva el término n-ésimo de la iteración:

xn1  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;

FLAVIO N. CARRILLO GOMERO - 2017 10


En Octave:

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

A(i, j) = i2j, i, j = 1, ..., 10.

¿Se podría generar A sin usar ninguna instrucción for?

1.9.2 if

La sintaxis habitual para la utilización de esta orden de control es:

if “relación lógica P1”


“instrucciones Q1”
else
“instrucciones Q2”
end

El significado es el siguiente: si P1 es cierto se ejecutan las instrucciones Q1 y si P1 es


falso se ejecutan las instrucciones Q2. Las líneas tres y cuatro anteriores pueden suprimirse
y, en este caso, cuando P1 sea falso, no se ejecuta ninguna instrucción.

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)

% Obtener una estimación inicial para el máximo.


valor_max=x(1);
% Ahora navegaremos por el resto de la matriz,
% 1 elemento a la vez
for k=2:length(x)
FLAVIO N. CARRILLO GOMERO - 2017 11
% si el valor en el desplazamiento actual es más grande
% que nuestro máximo.
if (x(k)>valor_max)
% ...entonces actualizar nuestro valor máximo,
valor_max=x(k);
end
end
% "valor_max" será retornado automáticamente.

Ejercicio 1.32

Escribir un código en Octave para hallar el valor mínimo de x.

1.9.3 while

La sintaxis para la utilización de esta orden de control es:

while “relación lógica(contador)”


“instrucciones(contador)”
end

El significado de este esquema es que las instrucciones se irán ejecutando mientras la “relación
lógica” sea cierta.

Ejercicio 1.33

Determine el valor de la precisión de la máquina usando un bucle while. Compare el valor


obtenido con la variable predefinida eps de Octave.
function precmaq
precmaq=1;
while (1+precmaq)>1
precmaq=precmaq/2;
end
precmaq = 2*precmaq

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.

% GRAFICAR UNA SEÑAL SENOIDAL


% Dado: la frecuencia, magnitud y fase
% Graficar un conjunto de señales senoidales (hasta 4)
%
% utilizar: plotsinusoides(frec,mag,fase)
%
function plotsinusoides(frec,mag,fase)

max_plots=4; % Máximo número de sinusoides para graficar en una


sola vez
num_points=200; % Número de puntos por repetición.

% 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

% Queremos esto para 2 repeticiones, y num_points por repetición


frec_min=min(frec);
step=2/(frec_min*num_points);
t=0:step:2*(1/frec_min);

FLAVIO N. CARRILLO GOMERO - 2017 12


i=1; % i es nuestro contador de sinusoides
% Determinar cuántas sinusoides graficar
% Si el usuario pasa arreglos mayores a 4, ignoraremos los últimos
% elementos
mi_limite=min(length(frec),max_plots);

% Para cada sinusoide, graficarlo


while (i<=mi_limite)
% Genera una sinusoide para este valor de i
x=mag(i)*cos(2*pi*frec(i)*t+fase(i));
% Hacer un mensaje agradable para el título
mi_titulo=...
sprintf('Sinusoide con f=%d Hz.,mag=%4.2f, fase=%4.2f
radianes',...
frec(i), mag(i), fase(i));
% Ahora hacer la gráfica para esta sinusoide.
subplot(mi_limite,1,i);
plot(t,x);grid;
title(mi_titulo);
ylabel('Amplitud');

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

1.10 REFERENCIA BIBLIOGRÁFICA

1. Free Your Numbers. J Eaton, D. Bateman, S. Hauberg y R. Wehbring. GNU Octave,


Edition 4 for Octave Vs 4.2.1, February 2017. USA.

2. GNU Octave. Scientific Programming Language:

https://www.gnu.org/software/octave/

FLAVIO N. CARRILLO GOMERO - 2017 13

Vous aimerez peut-être aussi