Dsp Octave
n
usando GNU Octave
Dr. Alfonso Alba Cadena
fac@galia.fc.uaslp.mx
Facultad de Ciencias
UASLP
GNU Octave...
• Es un lenguaje de alto nivel orientado al c´mputo num´rico
o
e
• Trabaja nativamente con vectores y matrices
• Es altamente compatible con Matlab
• Puede extenderse mediante funciones escritas en C/C++
• Es de distribuci´n gratuita
oOctave puede descargarse de http://www.octave.org
1
Operaciones con matrices y vectores
• En Octave se pueden definir matrices escribiendo
sus elementos entre corchetes.
• La coma separa los elementos en columnas, y el
punto y coma los separa en renglones.
Ejemplo: m = [1, 2, 3; 4, 5, 6] asigna a la variable m
la matriz
123
456
.
2
Acceso a los elementos de una matrizDada una matriz m se puede tener acceso a cualquier
elemento, rengl´n, columna, o sub-matriz de m:
o
• m(i,j) hace referencia a un elemento.
• m(i,:) hace referencia al i-´simo rengl´n.
e
o
• m(:,j) hace referencia a la j-´sima columna.
e
• m(i1:i2, j1:j2) hace referencia a una sub-matriz.
3
Aritm´tica de matrices
e
• Suma y resta: a + b, a - b
• Producto matricial: a* b
• Producto elemento por elemento: a .* b
• Transpuesta conjugada: a’
4
Matrices especiales
Las siguientes funciones de Octave devuelven matrices
de utilidad general.
• Identidad: eye(n, m)
• Unos: ones(n, m)
• Ceros: zeros(n, m)
• Ruido uniforme: rand(n, m)
• Ruido normal: randn(n, m)
• Vector de n valores equiespaciados: linspace(base, limit, n)
• Rango de ´
ındices:a:b (devuelve el vector [a, a+1, ..., b])
5
Ejercicios
Defina las siguientes matrices en Octave :
A=
1 2 −1
20 1
−1 1
, B= 2
0 , C = 3 · I3×3.
1 −2
Usando las matrices anteriores, calcule las siguientes
expresiones:
a) A × B
b) B × A − C
c) A + λN , donde λ = 0.1 y N es ruido uniforme
6
Funciones
Una funci´n de Octave toma cero o mas par´metros
o
a(escritos entre par´ntesis), realiza alg´n procedimiento,
e
u
y puede o no devolver alg´n resultado.
u
Ejemplos de funciones:
> cos(1)
ans = 0.54030
> ones(1, 5)
ans =
11111
> floor(mean([1, 2, 3, 4, 5]))
ans = 2
7
Definici´n de funciones
o
Uno puede escribir sus propias funciones de Octave
usando la siguiente sintaxis:
function resultado = nombre (parametros )
cuerpo de lafunci´n
o
end
Ejemplo:
> function y = cuad(x)
> y = x * x;
> end
> cuad(5)
ans = 25
8
Librer´ de funciones
ıas
Para poder utilizar una funci´n en el futuro, sin tener
o
que escribirla nuevamente, es necesario guardarla en un
archivo de texto con el mismo nombre que la funci´n y
o
extensi´n .m
o
# Archivo:
# Descripcion:
cuad.m
cuad(x) devuelve el cuadrado de xfunction y = cuad(x)
y = x * x;
end
9
Buenas pr´cticas de programaci´n
a
o
ıa
• Escribir funciones de librer´ para realizar tareas comunes.
• Dividir un problema grande en sub-problemas mas
peque˜os cuya implementaci´n sea sencilla.
n
o
• Agregar comentarios a las funciones de librer´ que
ıa
describan la tarea que realizan y los par´metros que
a
toman.
• Limitar las funciones alas tareas que deben realizar
de manera que sean claras y reutilizables.
10
Ejercicios:
1. Escribir una funci´n fact(x) que calcule y devuelva
o
el factorial de x. Para esto, investigar c´mo realizar
o
ciclos (for, while, etc.) en Octave .
2. Escribir una funci´n que tome como entrada dos
o
vectores y devuelva el producto punto. La funci´n
o
debe verificar primero que los vectorestengan la
misma longitud. Usar las estructuras if, for, y la
funci´n length().
o
3. Utilizando la funci´n anterior, escriba una funci´n
o
o
√
que calcule la norma de un vector x (dada por x · x
).
11
Se˜ales discretas en Octave
n
• Una se˜al discreta y finita x[n] se representa en Ocn
tave como un vector. En ocasiones es ´til obtener
u
un vector adicional que contenga el rango de...
Regístrate para leer el documento completo.