Practica 3 Practicas Y Ejercicios

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 54

Universidad Autónoma del Estado de Morelos.

Facultad de Ciencias Químicas e Ingeniería.

Procesamiento Digital de Señales.

Practica 3 Ejercicios
Integrantes:

Gutiérrez Tapia Edgar


García Orihuela Salvador Ignacio

Profesor:
Dr. José Gerardo Vera Dimas

2 de julio del 2018


Practica_3
Ejercicio 1: representación de una señal en un rango dado
En general, una señal quedará representada por un vector fila o por un vector columna (es decir, por
matrices con una única fila o columna). En MATLAB, todos los vectores se indexan comenzando por el
1, es decir, y(1) es el primer elemento del vector y. Cuando este criterio no coincida con el del
problema a resolver (e.g., porque el primer valor del vector y corresponda al índice -5), se puede
crear un vector adicional de índices. Por ejemplo, para representar la señal:
Se puede usar el operador ‘:’ para definir un vector con los índices de x[n] no nulos, y luego definir
el propio vector x de modo que contenga los valores deseados en cada uno de estos índices:
>> n=[-3:3];
>> x=2*n;
Represente esta señal escribiendo stem(n,x). Para examinar la señal en un rango más amplio de índices, será necesario
extender tanto el vector de índices, n, como la señal x:

─ Para representar la señal en el intervalo [-5,5]:


>> n=[-5:5]; >> x=[0 0 x 0 0]; % x tenía el valor del ejemplo anterior

─ Para representarla en [-100,100]:


>> n=[-100:100]; >> x=[zeros(1,95) x zeros(1,95)]; % x tenía el valor del ejemplo anterior
Practica_3
Ejemplo_2
Ejercicio 2: representación de dos señales en un cierto rango

Sean x1 [n ] = δ[n] y x2[n+2] (la función δ[n ] toma valor 1 para n=0 y valor nulo en el resto).
Dibuje aparte el aspecto que tienen ambas señales. Estas señales pueden definirse en MATLAB escribiendo:

>> nx1=[0:10];
>> x1=[1 zeros(1,10)];
>> nx2=[-5:5];
>> x2=[zeros(1,3) 1 zeros(1,7)];
Para representarlas, basta escribir stem(nx1,x1) y stem(nx2,x2).
Practica_3
Ejercicio 3: representación de señales continuas

Una señal continua es posible representarla mediante vectores que contengan valores de dicha
señal en instantes de tiempo muy cercanos entre sí. Así, si se quiere representar una señal
continua en el intervalo 5 5 ≤≤− t mediante la expresión de un valor cada 0.1 segundos, tenemos
dos opciones para crear el vector de índices (en este caso instantes de tiempo):
>> t=[-5:0.1:5];
, o bien:
>> t=linspace(-5,5,101);
Hecho esto, para representar la señal ( ) ( / 4) x t sen t π = basta con escribir:
>> x=sin(pi*t/4);

Observe que en MATLAB, cuando el argumento de una función de este tipo (sin, cos, exp, etc.) es un
vector, el resultado es un vector del mismo tamaño, en el que cada valor resulta de la aplicación de la
función a cada valor del vector argumento. Para representar gráficamente la señal, resaltando su
carácter de señal continua, utilice plot en vez de stem:
>> plot(t,x);
Represente gráficamente las señales x1(t)=sen (pi*t / 4) y x2(t) =cos(pi*t / 4) en el
intervalo -4≤t≤4 dando valores cada 1/8 de segundo. Represente ambas sobre la misma
figura utilizando el comando plot y, a continuación, nuevamente sobre la misma figura,
represente ambas con el comando stem (para ello utilice el comando hold). Utilice dos
colores: uno para las dos representaciones de x1(t) y otro para las dos de x2(t ) .
Practica_3
Ejercicio 4: representación de señales complejas

Sea ahora el caso de una exponencial compleja discreta en el intervalo 0 ≤n≤ 32 :

>> n=[0:32];
>> x=exp(j*(pi/8)*n);

El vector x contiene una serie de 33 valores complejos de la señal x[ n]. Represéntelos


gráficamente, haciendo uso de la función stem, indicando qué característica de cada valor
complejo desea representar:

>> stem(n,real(x));
>> stem(n,imag(x));
>> stem(n,abs(x));
>> stem(n,angle(x));
Practica_3
Ejercicio 5: operaciones aritméticas con señales

Siempre que dos señales compartan el mismo vector de índices (es


decir, que el vector que representa cada señal tenga el mismo origen
de tiempos), es posible realizar directamente cierto tipo de
operaciones básicas. Así, defina las señales:

>> x1=sin((pi/4)*[0:30]);
>> x2=cos((pi/7)*[0:30]);

y efectúe las siguientes operaciones:

>> y1=x1+x2;
>> y2=x1-x2;
>> y3=x1.*x2;
>> y4=x1./x2;
>> y5=2*x1;
>> y6=x1.^x2;

Represente las ocho señales de este apartado en ocho figuras distintas.


Ejercicio 5: operaciones aritméticas con señales

Siempre que dos señales compartan el mismo vector de índices (es decir, que el
vector que representa cada señal tenga el mismo origen de tiempos), es posible
realizar directamente cierto tipo de operaciones básicas. Así, defina las señales:

>> x1=sin((pi/4)*[0:30]);
>> x2=cos((pi/7)*[0:30]);

y efectúe las siguientes operaciones:

>> y1=x1+x2;
>> y2=x1-x2;
>> y3=x1.*x2;
>> y4=x1./x2;
>> y5=2*x1;
>> y6=x1.^x2;

Represente las ocho señales de este apartado en dos figuras distintas, una de X1
y x2 y las otras de las y.
Practica_3
Ejercicio 6: scripts y funciones

En MATLAB hay esencialmente dos tipos de ficheros con extensión ‘.m’: scripts de
comandos y funciones. Su uso es imprescindible de cara a organizar, depurar y
guardar los ejercicios (en scripts) y siempre que se requiera realizar un mismo
conjunto de operaciones (es decir, funciones) sobre señales diferentes.
Tenga en cuenta que para poder invocar scripts y funciones, los ficheros ‘.m’ que
los implementan han de estar en algún lugar referenciado por el path de MATLAB.
Utilice algún directorio de su unidad de disco privada (por defecto, h:\) y añádalo
al path de MATLAB (menú ‘File/Set path…’). Recuerde que tendrá que efectuar
esta operación cada vez que reinicie su ordenador.
Genere con el editor de MATLAB el siguiente script (asígnele el
nombre ‘ejercicio_6.m’), cuyo objetivo es representar una
determinada señal discreta en un intervalo dado, calcular su valor
medio en el citado intervalo, y representar este valor como una
función constante:

% ejercicio6.m
n = [0:16];
x1 = cos(pi*n/4);
y1= mean(x1);
stem(n,xl)
title(‘x1 = cos(pi*n/4)’)
xlabel(‘n (samples)’)
ylabel(‘x1[n]’)
hold on
m1=y1*ones(1,17);
plot(n,m1)
hold of
Si ahora desea realizar la misma operación con la señal

, basta con copiar el fichero, asignarle un nuevo nombre (e.g.,


‘ejercicio_6b.m’) y cambiar las líneas que proceda:

% ejercicio6b.m
n = [0:32];
x2 = sin(pi*n/4);
y2 = mean(x2);
stem(n,x2)
title(‘x2 = sin(pi*n/4)’)
xlabel(‘n (samples)’)
ylabel(‘x2[n]’)
hold on
m2=y2*ones(1,33);
plot(n,m2)
hold of
Un fichero ‘.m’ también puede representar una función. Para ello, la primera palabra del fichero ha de ser function.
El resto de la línea especifica los parámetros que acepta la función y los valores que devuelve. El siguiente ejemplo
muestra una función llamada f_obtiene_yz, que toma como parámetro un vector x, y devuelve otros dos vectores, y
y z (acostúmbrese a preceder el nombre de todas las funciones con las letras f_, de modo que se distingan
claramente de funciones de MATLAB o de scripts):
function [y,z] = f_obtiene_yz(x)
% [y,z] = f_obtiene_yz(x) admite una señal ‘x’ y
% devuelve dos señales, ‘y’ y ‘z’, donde ‘y’ vale 2*x
% y ‘z’ vale (5/9)*(x-3)
y = 2.*x;
z = (5/9).*(x-3);

El siguiente ejemplo muestra cómo utilizar esta función desde la línea de comandos (o bien desde un script):
>> n=[0:15];
>> x1=4*sin((pi/4)*n);
>> [y1,z1]=f_obtiene_yz(x1);
>> stem(n,x1);
>> hold on;
>> stem(n,y1,’r’);
>> stem(n,z1,’g’);
>> hold of;
Practica_3
Ejercicio 7: transformaciones de la variable independiente

Defina en un fichero la siguiente función discreta, x[n], en el intervalo −3 ≤ n ≤11 , a través de un vector x y del
vector de índices nx correspondiente:

Una vez definida la señal x[n] , defina en el mismo fichero ‘.m’ las siguientes señales:
Practica_3
Ejercicio 8: señales pares e impares

Para cada una de las señales cuya expresión se ofrece a continuación, obtener su
parte par y su parte impar (para generar las señales invertidas utilice fliplr en vez
de modificar la variable independiente o vector de índices). Representar a
continuación las tres señales en una misma figura (utilice subplot), utilizando para
todas el rango 10 10 ≤≤− n . Codifique todo el ejercicio en un mismo script.

También podría gustarte