Está en la página 1de 6

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DEINGENIERIA ELECTRICA Y ELECTRONICA


PROCESAMIENTO DIGITAL DE SEÑALES 1

LABORATORIO 1

Señales continuas y discretas en matlab


Introducción teórica

Se muestra a continuación el empleo de Matlab para la generación de señales elementales: cuadrada,


triangular, entre otras.

El ToolBox de procesamiento de señales de Matlab posee una gran variedad de funciones para la
generación de señales, estas señales requieren de una representación vectorial de la variable tiempo, de
manera continua o discreta. Para realizar una simulación de un intervalo continuo, se usa un vector de
valores discretos con un intervalo de muestreo muy pequeño.

El siguiente comando genera un vector llamado t de valores que representan la variable tiempo, con un
intervalo de muestreo de 1 ms entre 0 y 1 segundo.

t = 0:0.001:1;

Después de creado el vector que representa la variable tiempo, es posible iniciar el desarrollo de alguna
señal de interés.

En Matlab una señal discreta en el tiempo se representa exactamente, porque los valores de la señal son
representados como los elementos de un vector. Sin embargo las señales de tiempo continuo en Matlab
son tan solo aproximaciones. La aproximación consiste de un vector cuyos elementos son muestras de
la verdadera señal de tiempo continuo. Cuando se usa esta técnica para la representación de señales
continuas es importante escoger el intervalo de muestreo lo suficientemente pequeño para asegurar que
las muestras capturan todos los detalles de la señal.

La generación de señales periódicas tales como ondas cuadradas y triangulares es una actividad muy
fácil de realizar en MATLAB.

1) SEÑAL CUADRADA
Consideremos primero la generación de una onda cuadrada de amplitud A, frecuencia fundamental w
(medida en radianes por segundo) y ciclo útil rho. Recordemos que el ciclo útil es la fracción de cada
periodo en donde la señal es positiva.

Para generar dicha señal se pueden escribir lo siguiente en la linea de comandos:}

A = 1;
w = 10 * pi;
rho = 0.5;
t = 0:0.001:1;
sq = A*square(w*t+rho);
plot(t,sq);

En la segunda línea de este ejemplo, pi es una función interna de Matlab que calcula el número más
cercano a la constante PI en formato de coma flotante. El último comando es usado para vizualizar la
señal generada. El comando plot dibuja líneas conectando los valores sucesivos de la señal y así da la
apariencia de una señal en tiempo continuo.

XLIII CICLO DE ACTUALIZACION PROFESIONAL Prof. Ing. Zenón Cucho Mendoza


UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DEINGENIERIA ELECTRICA Y ELECTRONICA
PROCESAMIENTO DIGITAL DE SEÑALES 2

2) SEÑAL TRIANGULAR

Consideremos ahora la generación de una onda triangular de amplitud A, frecuencia fundamental w y


ancho Wdt . El periodo de la onda triangular será T con el máximo valor de la señal ocurriendo en t = WT
. El comando básico para generar esta señal es:

A * sawtooth(w * t + Wdt)

3) SEÑAL RAMPA

Para generar la señal rampa, tan solo es necesario recordar que esta función puede ser creada, como la
composición de una recta Y(x) = x a partir de cero y de la recta Y(x) = 0 para valores de x menores de
cero, así la versión discreta se muestra a continuación:

t1=0:0.1:10;
rampa1=t1;
rampa=[zeros(1,101),rampa1];
t2=-10:0.1:0;
t=[t2,t1];
plot(t,rampa)

4) SEÑAL ESCALÓN

En Matlab, el comando ones(M, N) genera una matriz de unos de tamaño MxN, y el comando zeros(M,
N) es una matriz de ceros del mismo tamaño. Se puede hacer uso de estas dos matrices para generar
dos señales comúnmente usadas: la señal escalón y la señal impulso.

Una señal paso de amplitud uno, puede ser generada con el siguiente comando.

U = [zeros(1, 10), ones(1, 11)];

Para la versión continua creamos un vector


que represente el tiempo el cual tenga
muestras de un intervalo separados por
valores muy pequeños. Los comandos y los
resultados se muestran a continuación:

XLIII CICLO DE ACTUALIZACION PROFESIONAL Prof. Ing. Zenón Cucho Mendoza


UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DEINGENIERIA ELECTRICA Y ELECTRONICA
PROCESAMIENTO DIGITAL DE SEÑALES 3

u=[zeros(1,10),ones(1,11)];
t=-1:0.1:1;
plot(t,u)

5) SEÑAL ESCALÓN EN TIEMPO DISCRETO

Como se mencionó anteriormente, una señal generada en Matlab es inherentemente de naturaleza


discreta. Para visualizar una señal en tiempo discreto se puede hacer uso del comando stem.
Específicamente stem(n, x), bosqueja los datos contenidos en el vector x como una señal de tiempo
discreto con los valores de tiempo definidos por el vector n. Los vectores n y x deben tener dimensiones
compatibles, es decir deben tener el mismo número de elementos. Así, para este caso para obtener la
representación de esta señal en tiempo discreto creamos un vector-tiempo el cual debe tener valores
separados por una unidad.

u=[zeros(1,10), ones(1,11)];
n=-10:10;
stem(n,u)

Recuerde que para poder usar las funciones plot y stem, es requisito que los vectores (t y u) ó (n y u)
tengan iguales dimensiones. Por esta razón el vector u se forma como una composición de diez ceros y
11 unos, debido a que los arreglos t y n, tienen dimensión 21 dado que incluyen un elemento central el
cual es el número cero. Para probar este hecho, se puede hacer uso de la función Matlab llamada size
que devuelve como resultado un vector con las dimensiones de la matriz que se le pasa como
parámetro.

6) SEÑAL IMPULSO:

La versión discreta de la señal impulso se puede también generar con ayuda de las funciones zeros y
ones, realizando una composición como sigue:

delta = [ zeros( 1 ,10 ), 1 , zeros( 1 ,10 ) ];


n = -10:10;
stem(n,delta);

XLIII CICLO DE ACTUALIZACION PROFESIONAL Prof. Ing. Zenón Cucho Mendoza


UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DEINGENIERIA ELECTRICA Y ELECTRONICA
PROCESAMIENTO DIGITAL DE SEÑALES 4

7) FUNCIÓN DISCRETA PARA UNA SECUENCIA

Grafique las siguientes secuencias

Código en matlab

%Creamos los vectores de tiempos:


nn1=[0:1:25];
nn2=[-10:1:10];
nn3=[0:1:50];
%Creamos las señales
x1=sin((pi/17)*nn1);
x2=sin((pi/2)+3*pi*nn2);
x3=cos((pi/sqrt(23))*nn3);

%Graicando la funcion duscreta de cada señal


subplot(2,2,1),stem(nn1,x1),title('grafico 1');
xlabel('Variable discreta n'),ylabel('amplitud');
subplot(2,2,2),stem(nn2,x2),title('grafico 2');
xlabel('Variable discreta n'),ylabel('amplitud');
subplot(2,2,3),stem(nn3,x3),title('grafico 3');
xlabel('Variable discreta n'),ylabel('amplitud');

Resultado:

XLIII CICLO DE ACTUALIZACION PROFESIONAL Prof. Ing. Zenón Cucho Mendoza


UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DEINGENIERIA ELECTRICA Y ELECTRONICA
PROCESAMIENTO DIGITAL DE SEÑALES 5

Representar los siguientes impulsos

Implementación en matlab

%Implementación de la señal X1
L=21;%Longitud
nn1=0:(L-1);%Vector de tiempos
imp1=zeros(L,1);
imp1(6)=0.9;%Localizamos el punto donde queremos el impulso
% La posicion 6 que representa a n=5

%Implementación Señal X2
L=11;%Longitud
nn2=-10:0;%Vector de tiempos
imp2=zeros(L,1);
imp2(4)=4.5;%Localizamos el punto donde queremos el impulso

%Representación grafica
subplot(2,1,1),stem(nn1,imp1),title('Representación de la señal X1');
xlabel('Variable discreta n'),ylabel('Amplitud');

subplot(2,1,2),stem(nn2,imp2),title('Representación de la señal X2');


xlabel('Variable discreta n'),ylabel('Amplitud');

XLIII CICLO DE ACTUALIZACION PROFESIONAL Prof. Ing. Zenón Cucho Mendoza


UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DEINGENIERIA ELECTRICA Y ELECTRONICA
PROCESAMIENTO DIGITAL DE SEÑALES 6

8) Teorema de muestreo

Resultado con frecuencia de muestreo a 8 KHz

% Obtención de la señal muestreada a 8 Khz


n=1:80;
x=sin(2*pi*(300/8000)*n+pi/4);
stem(n,x)

Señal obtenida con Fs=8 Khz Señal obtenida con Fs=1 Khz

Actualizado a Febrero 2020

XLIII CICLO DE ACTUALIZACION PROFESIONAL Prof. Ing. Zenón Cucho Mendoza

También podría gustarte