Está en la página 1de 7

INTRODUCCION A MATLAB.

PRÁCTICA 0
(1 sesión)

Laboratorio de Señales y Comunicaciones


3er curso, Ingeniería de Telecomunicación

1
1.- INTRODUCCION.

MATLAB es un entorno de programación orientado a cálculo numérico, con un


lenguaje propio de alto nivel e interpretado, no compilado.

A continuación se proponen una serie de ejercicios con los que se pretende que
el alumno aprenda el funcionamiento del programa, así como su utilización en el ámbito
del procesado de señal.

Al principio, los ejercicios serán guiados, y el alumno tan sólo deberá introducir
los comandos escritos en el guión de la práctica. Durante la práctica, irán
desapareciendo las guías y será el propio alumno el que deba confeccionar las
instrucciones necesarias para llegar a los objetivos propuestos.

La ayuda “on-line” mediante la instrucción help de MATLAB, permite obtener


información sobre el empleo de cualquier función.

El objetivo de esta práctica no es otro que introducir al alumno en el manejo del


MATLAB, aportándole los conocimientos necesarios para una mayor profundización.

2.- ESTRUCTURAS DE DATOS EN MATLAB.

La estructura de datos fundamental en MATLAB es la matriz, bien sea de


elementos reales o complejos. Los escalares son matrices de tamaño 1x1 y los vectores
son matrices de una sola fila o columna.

Las matrices son creadas dinámicamente de alguna de las siguientes formas :

a) Directamente, mediante el listado de los elementos que la componen.


b) Mediante funciones ya incluidas en el entorno.
c) Mediante funciones escritas a tal efecto (ficheros .m)
d) Cargándolas de ficheros de datos (ficheros .mat)

Se puede visualizar en todo momento en MATLAB las variables almacenadas en


memoria mediante las instrucciones who y whos, así como los ficheros con la extensión
.m y .mat en el directorio de trabajo con la instrucción what. Recordar que un fichero
.m puede ser bien un fichero “script” (secuencia de comandos MATLAB) bien un
fichero “función” (comienza con la palabra “function” , los parámetros son transferidos,
y las variables definidas en él son locales a la función no operando en el espacio de
trabajo global) ; mientras que un fichero .mat contiene las variables especificadas como
argumentos del comando save.

Ejercicio 1.1.

Cree una matriz de números reales y tamaño 2x4:


>> m=[0 2 4 6 ;0 3 5 7];

Guárdela en un fichero:

2
>> save matrizm m

Limpie el espacio de trabajo:


>> clear

Cargue del disco la matriz y compruebe las variables en memoria:

>> load matrizm


>> whos

Los elementos de una matriz pueden referenciarse unitariamente o por grupos,


sin más que hacer referencia a su posición dentro de estas.

Ejercicio 1.2.

Seleccione de la matriz anterior el elemento que se encuentra en la primera fila,


tercera columna. Seleccione la segunda fila. Seleccione la cuarta columna.
Seleccione la submatriz 2x2 que contiene elementos de las dos primeras filas y
las dos primeras columnas.

>> clear
>> load matrizm
>> m(1,3) % Elemento 1ª fila 3ª columna
>> m(2,:) % 2ª fila
>> m(:,4) % 4ª columna
>> m(1:2,1:2) % Matriz 2x2

Ejercicio 1.3.

Repita el ejercicio anterior con la siguiente matriz de números complejos :

Para introduccir en MATLAB un número complejo se pueden utilizar las letras i


y j, p.ej. 1+i, 2-3j.

Todas estas operaciones, pueden hacerse obviamente con vectores fila y


columna. Por otro lado, existen funciones de MATLAB que generan matrices especiales
como la matriz identidad( función eye), o una matriz con todos los elementos cero
(zeros), o una matriz con elementos aleatorios (rand), etc.

Con la ayuda “on-line” de MATLAB se puede obtener más información sobre


estas funciones.

Ejercicio 1.4.

3
Los elementos básicos de Matlab son matrices, los escalares son matrices de
1×1 elemento. En general es mejor operar con matrices que operar con escalares y
bucles. En el caso que no haya mas remedio que utilizar bucles es mejor declarar las
variables, aunque en Matlab no haga falta. Para ilustrar dicho problema vamos a
calcular los cuadrados de los N=1000 y 10000 primeros número naturales de 3 formas
distintas:

function [T1,T2,T3]=cuadrados(N)
T=cputime;
for i=1:N
Q1(i)=i^2;
end
T1=cputime-T;

T=cputime;
Q2=zeros(1,N);
for i=1:N
Q2(i)=i^2;
end
T2=cputime-T;

T=cputime;
Q3=[1:N].^2;
T3=cputime-T;

Comprobar que Q1 Q2 y Q3 son iguales y que T1>T2>T3.

3.- REFERENCIA TEMPORAL.

Es fundamental, a la hora de trabajar en MATLAB con funciones contar con una


referencia temporal, ya que a partir de ella se obtendrán las señales que se desea
generar. La función linspace permite crear vectores que pueden ser utilizados como
referencia temporal.

Es posible también definir vectores de referencia mediante la sentencia


valorinicial:paso:valorfinal, la cual genera un vector fila con valores que van desde
valorinicial hasta valorfinal, avanzando paso de elemento a elemento.

Ejercicio 1.5.

a) Obtenga utilizando la función linspace, un vector de 20 elementos que


recorra el intervalo [0,π].
b) Genere utilizando la sentencia valorinicial:paso:valorfinal, un vector de
referencia de 1000 puntos que recorra el intervalo [0,10].

4.- GENERACION DE FICHEROS MATLAB.

4
Todos los datos (variables) que se definen en MATLAB admiten de forma
natural las operaciones de suma, resta, multiplicación, elevación a una potencia, etc.

El entorno proporciona las operaciones matemáticas más usuales para el


tratamiento de matrices, vectores y escalares, que además pueden componerse. Esto
permite generar señales a partir de vectores o matrices de referencia.

Ejercicio 1.6.

Con el vector del Ejercicio 1.4 a), realice las siguientes operaciones :
• Multiplíquelo por π y calcule su coseno (función cos).
• Calcule el valor absoluto (abs) del vector resultante.
• Calcule la energía del vector resultante.

Es posible mediante MATLAB crear librerías de funciones definidas por el


usuario en forma de ficheros de tipo ASCII (ficheros .m), que contienen una serie de
sentencias que se ejecutan secuencialmente al llamar al fichero.

Estos ficheros se crean mediante la opción New M-file en el menú File de


MATLAB. Automáticamente se pasa al Bloc de Notas de Windows en el que se puede
ya escribir las sentencias.

Por ejemplo, la función BOXCAR de Matlab está definida de la siguiente forma


en el fichero boxcar.m:

function w = boxcar(n)
%BOXCAR BOXCAR(N) returns the N-point rectangular window.
w = ones(n,1);

Ejercicio 1.7.

Escriba en MATLAB un fichero .m de función llamado “sinusoi”, que genere


señales sinusoidales (utilizar la función sin de MATLAB), a partir de los siguientes
parámetros : instante inicial (n0), longitud temporal de la secuencia (N), periodo de
muestreo (paso), frecuencia angular (ω0), y fase (φ0). La función devolverá tanto la
secuencia generada (x) como el vector de referencia temporal (ref).

5.- REPRESENTACION GRAFICA.

Como herramientas de representación gráfica en dos dimensiones, se tienen las


funciones plot, stem, loglog, semilogy y semilogx. Además de estas funciones
principales, existen una serie de funciones complementarias : clg, subplot, hold, figure,
grid, ginput, zoom, etc, que son de gran utilidad en la representación de señales.

Ejercicio 1.8.

5
Represente los vectores obtenidos en los Ejercicios 1.5 y 1.6. Utilice en la
representación el vector de referencia generado en el Ejercicio 1.4 a). Una vez
obtenida la gráfica, compruebe como funcionan los comandos grid, ginput, y zoom.

Es bien conocida la importancia de las señales paso-banda por su aparición


frecuente en los sistemas de comunicaciones. Son señales que tienen su energía (o
potencia) concentrada en una zona concreta del espectro, en torno a fo. Estas señales, si
son de banda muy estrecha tienen un aspecto muy parecido al de una sinusoide de
frecuencia fo. En el dominio del tiempo también se parecen, de modo que una señal
paso-banda puede escribirse de la forma:

siendo fo=wo/2π la frecuencia central, denominada, en muchas ocasiones, la portadora.

Ejercicio 1.9.

Escriba una función que genere una señal paso-banda siendo r(t) una
sinusoide de frecuencia fr y ϕ(t) otra sinusoide de frecuencia fp. La función tendrá la
forma siguiente:

[ref, x] = pasoband(fo, fr, fp, inf, sup, paso)

donde fo : es la frecuencia central o portadora


fr : es la frecuencia de la señal r(t)
fp : es la frecuencia de la señal ϕ(t)
inf : es el límite inferior del vector de referencia temporal
sup : es el límite superior del vector de referencia temporal
paso : es el paso del vector de referencia temporal
x : es la señal paso-banda
ref : es el vector de referencia temporal para x

La función terminará dibujando la señal generada, fijando el eje “x” en el


intervalo [-1, 1], el eje “y” en el [-2, 2] y poniendo título a la gráfica (utilizar los
comandos axis y title de MATLAB).

Emplear “pasoband” para una señal con: fo=25 Hz; fr=3/2 Hz; fp=15 Hz;
inf=-0.5; sup=0.5; paso=(1/fo)/50. Varíe los parámetros fr y fp e interprete los
resultados.

6.-SEÑALES Y TRANSFORMACIONES ELEMENTALES.

Las facilidades que ofrece MATLAB para la generación de vectores resultan de


gran utilidad para construir un eje de tiempos. Esto puede llevarse a cabo como se ha
visto con las sentencias linspace y valorinicial:paso:valorfinal.

A continuación se proponen una serie de ejercicios en los que aplican las


técnicas anteriores para la generación de señales elementales, así como para la
realización de transformaciones con estas señales.

6
Ejercicio 1.11. (Deltas)

Escriba una función que genere la secuencia δ[n-n0] (con n y n0 enteros),


recibiendo como parámetros el número de muestras de la secuencia (L) y el retardo
(n0). Además de la secuencia generada (x), la función deberá devolver como parámetro
de salida, el vector de referencia temporal (ref); este será tal que la secuencia δ[n-n0]
generada esté centrada en el origen (para L par el vector de referencia temporal irá
desde -L/2 hasta L/2-1; para L impar desde -L/2 hasta L/2). La función mostrará por
pantalla un mensaje de error en caso de que n0 rebase los límites del vector temporal.

También podría gustarte