Sunteți pe pagina 1din 7

Procesamiento Digital de Seales

Problemas de Programacin en MATLAB


Problema 1:
En un determinado programa de MATLAB se generan dos vectores No vacos X y Y.
Despus de generados los vectores se coloca en el programa la siguiente
instruccin:
V=Y. / X;
Al correr el programa la ejecucin se detiene en la instruccin anterior arrojando en la consola
de MATLAB (Command Window) un mensaje de ERROR. De acuerdo a ello,
indique justificadamente a que se debera el error presentado.
Problema 2 :
Dos seales cosenoidales de igual frecuencia, igual amplitud y diferente fase, fueron
capturadas (un nico periodo) con MATLAB y almacenas en un vector X y en un vector Y
respectivamente.
De acuerdo a ello, se pide escribir un programa en MATLAB que permita determinar si el
desfasaje entre ambas seales (X y Y) es de 90 grados. El resultado SI o
NO debe aparecer en pantalla.
Problema 3:
Dado un vector X, determinar cuantas muestras son positivas y cuantas son negativas.
Problema 4:
Dado un vector X y un vector Y , desarrollar un programa que implemente la siguiente
ecuacin:
2 - P N 0,1,..., i ) n i ( Y * ) n ( X ) i ( Z
1 N
0 n
+

donde N es el tamao del vector X y P es el tamao del vector Y.


Problema 5:
Dado un vector X de muestras que representa a una seal, determinar cuantos picos (positivos
o negativos) presenta la seal.
Problema 6:
Dado un numero, construir un programa que permita calcular su factorial.
Problema 7:
Dada una matriz A de dimensin MxN, determinar el valor mximo y el valor mnimo de la
matriz as como la localizacin de los mismos dentro de la matriz (ndices).
Problema 8:
Se tiene un vector de muestras( X) en MATLAB que representa a una determinada seal. Se
por tanto, escribir un programa que permita contabilizar el numero de cruces por cero de
negativo a positivo existente en todo el vector. El programa deber presentar el resultado por
pantalla.
Problema 9:
continua-------
Dada una matriz X de dimensin MxN y una matriz Y de dimensin LxP , desarrollar un
programa que implemente la siguiente ecuacin:
2 - P N 0,1,..., n
2 - L M 0,1,..., m ) j n , i m ( Y * ) j , i ( X ) n , m ( Z
1 N
0 j
1 M
0 i
+
+

Problema 10:
Dado un vector X, normalizar los valores del vector a valores en el rango [0,5]. Tambin se pide
normalizar el mismo vector al rango [-2,5].
Problema 11 :
Se tiene un vector X en MATLAB de 80000 muestras.
De acuerdo a ello, se pide construir un programa que permita determinar secuencialmente la
energa de cada bloque de 2000 muestras del vector. (se define la energa de un bloque como
la suma de las muestras elevadas la cuadrado) . El programa deber ir parando en cada
iteracin con un pause y mostrar la energa del bloque actual en pantalla.
Problema 12:
Dado un vector X de 2048 componentes, desarrollar un programa que iterativamente extraiga
del mencionado vector bloques de 64 muestras consecutivos. El programa deber calcular la
energa de cada bloque e deber ir formando un vector en con los valores de energa que se
van calculando. Al final el programa deber mostrar por pantalla la grfica del vector resultante.
Obs. La energa de un bloque de muestras es la suma de los valores de las muestras al
cuadrado.
Problema 13:
Se captura 10 segundos de una seal de audio estreo va MATLAB y se almacena en un
vector X. De acuerdo ello, se pide escribir un programa que genere un vector de
seal Y con las siguientes caractersticas:
Durante 0.5 segundos de seal se debe tener : YR=XR y YL=XL
Durante los siguientes 0.5 segundos de seal : YL=XR y YR=XL
Esto debe cumplirse en forma alternada (como est especificado) durante los 10 segundos de
seal.
Problema 14:
Construir un programa en que permita generar (va MATLAB) 5 segundos de seal triangular
discreta de 8KHz de frecuencia, 32KHz de frecuencia de muestreo y amplitud 0.2. El programa
deber tambin graficar la seal discreta en el tiempo utilizando la instruccin plot y
especificando los ttulos correspondientes.
Problema 15:
Construir un programa en que permita generar (va MATLAB) 20 segundos de seal cuadrada
TTL discreta de 2KHz de frecuencia, 16KHz de frecuencia de muestreo y amplitud 0.6. El
programa deber tambin visualizar la seal discreta en el tiempo utilizando la instruccin
stem y especificando los ttulos correspondientes.
Problema 16:
Construir un programa en que permita generar (va MATLAB) 10 segundos de seal senoidal
analgica (es decir para ser visualizada en el osciloscopio a partir de la salida de audio de la
tarjeta de sonido) de 800Hz de frecuencia, frecuencia de muestreo de 8KHz y amplitud 0.75.
Problema 17:
En una experiencia de laboratorio se peda generar una seal discreta en el transmisor para
enviarla al receptor.
En este problema se pide escribir un programa que genere un vector X y que represente 5
segundos de un seal peridica del tipo diente de sierra (ver figura 1). La amplitud de la
rampa deber ser de 0.6, mientras que la frecuencia de la misma deber ser de 200Hz.
A continuacin se especifica el programa del transmisor, tal como fue entregado al inicio de
dicho laboratorio (observe donde tiene que ser colocado el pequeo algoritmo requerido para
generar el vector X) .

clear all;
close all;
clc;
fs = 8000; %frecuencia de muestreo
r = 16; %bits por muestra.
version = 0;
numcan = 1; %monocanal
repeticiones = 0;
duracion = 5; %duracin en tiempo del vector requerido
(5segundos)
En este espacio debe ser colocado el programa requerido
para generar X
ao=configsalidasenal(fs,r,numcan,repeticiones,version);
reproduccionsenal(ao,X,repeticiones,'seal generada');
0.6
x(n)
5 segundos (en tiempo)
Figura 1
Problema 18:
Escribir un programa en MATLAB que permita leer un vector de muestras x para realizar el
siguiente procesamiento: Por cada muestra leda del vector de entrada, la muestra de salida
del sistema deber ser igual a la muestra leda actualmente + las N muestras anteriores de
entrada. (donde N y el tamao del vector de entrada es definido por el usuario).El resultado del
programa deber ser el vector y con las muestras resultantes del procesamiento.
Problema 19:
Se tiene un vector X en MATLAB que representa a una determinada seal de voz. El mximo
valor de las muestras que conforman este vector es de 0.86, mientras que el
mnimo es de -0.34. Se pide escribir un programa en MATLAB que transforme
este vector en un vector Y de tal forma que el mximo valor pase a ser 10,
mientras que el mnimo valor pase a ser 5.
Problema 20:
En un editor de programa de MATLAB se tiene disponible los vectores B y A que
corresponden respectivamente a los coeficientes de lo polinomios del numerador y del
denominador de una funcin de sistema H(z). Si se desea obtener y graficar (va programa) la
respuesta impulsiva del filtro, escriba usted el programa correspondiente, sabiendo que no se
cuenta con las instrucciones fft, ifft, freqz y zplane.
Problema 21:
Se tiene el siguiente programa en MATLAB:
clear;
close all;
x=[1 2 3 4 5];
h=[1 0 1] ;
X=fft(x,5);
H=fft(h,5);
Y=X.*H;
y=real(ifft(Y));
stem(y);
Se pide graficar el vector resultante y, tal como lo presentara stem.
Problema 22:
Se tiene la siguiente funcin de sistema :
2
2
z 2 1
z 5 z 4 3
) z ( H

+ +

Escribir un programa de MATLAB que grafique el diagrama de polos y ceros del sistema.
Problema 23:
Para una determinada aplicacin se necesita saber la grfica de la siguiente funcin:
t
t g
02 . 0 1
t) * 1000 * pi * )cos(2 exp(-0.001
) (
+

Si le piden a usted presentar la grfica de la funcin en MATLAB, escriba el programa


correspondiente. (Sug.: Como en toda simulacin se debe partir de una frecuencia de muestreo
patrn para lo cual defina fs = 24000. As mismo, a criterio suyo debe definir el numero de
puntos (muestras) en el tiempo para realizar la grfica).
Problema 24:
Se tiene un vector en MATLAB que representa a 8 segundos de una seal que fue capturada
con una frecuencia de muestreo de 8000Hz. Para una determinada aplicacin se necesita
determinar el tiempo (en segundos) que permanece la seal por encima del valor 0.78. De
acuerdo ello, se pide escribir un programa (en MATLAB) que permita obtener va pantalla el
resultado requerido.
Obs. Durante los 8 segundos se asume que el evento en cuestin se presenta una sola
vez. As mismo se prohibe el uso de funciones ya desarrolladas de MATLAB para la
implementacin del programa requerido.
Problema 25:
Un sistema discreto presenta la siguiente ecuacin diferencia :
) 3 n ( x 3 ) 1 n ( x 5 . 1 ) n ( x 2 . 0 ) n ( y +
Se pide:
a.- Expresar el sistema en diagrama de bloques.
b.- Determinar justificadamente si el sistema es FIR o IIR.
Escribir el programa en MATLAB que implementa el sistema. Para este caso asuma X
como siendo un vector aleatorio de 2000 componentes. Al final el programa
deber graficar y(n) en funcin del tiempo
Problema 26:
En la figura 2 se muestra la mascara de la respuesta en frecuencia que debe tener un filtro FIR
digital para una determinada aplicacin.
a.- Especificar la forma como usted creara el mencionada filtro.
b.- Escribir el programa en MATLAB que permita obtener la respuesta impulsiva del filtro,
indicando el orden que debe presentar.
3/4 /4 3/8 5/8
1


Figura 2
Problema 27:
Una seal es capturada y almacenada en un vector X. Los parmetros de captura son:
fs=8000Hz, 16bits/muestra y formato monocanal. Se desea filtrar la seal utilizando un filtro FIR
rechaza-banda de 51 coeficientes y frecuencia de corte de 800Hz. Se pide escribir un
programa en MATLAB que genere la respuesta impulsiva del filtro en un vector h y en seguida
que realice el filtraje de la seal.
Observacin : Generar el filtro con la instruccin fir1 y realizar el filtraje utilizando el
procedimiento explicado en clase . No utilizar la instruccin filter.
Problema 28:
La figura 3 muestra el espectro de una seal de audio (muestreada a 8KHz y a
16bits/muestra) con problemas de interferencia de una componente de 60Hz que deteriora la
calidad de la seal. La duracin de la seal capturada con MATLAB es de 3 segundos.
Si mediante el uso tcnicas de procesamiento digital de seales se desea eliminar la
mencionada interferencia sin perturbar seriamente la calidad de la seal original, se pide:
a.- Establecer el tipo de filtro FIR a emplear para eliminar solo la mencionada componente y
especificar justificadamente el orden que usted le colocara el filtro para esta aplicacin as
como su o sus respectivas frecuencias de corte.
b.- Especifique la ventana a utilizar mas apropiada para este caso y en forma justificada.
c.- A partir de las especificaciones anteriores, escribir el programa en MATLAB que permita
generar el filtro apropiado y en seguida permita filtrar la seal para obtener la seal limpia
requerida.
0 50 100 150 200 250 300
0
50
100
150
200
250
300
350
400
450
500
Respuesta en frecuencia de la Seal con Interferencia
frecuencia (Hz)
M
a
g
n
i
t
u
d
Figura 3
Problema 29:
Se desea disear un filtro digital FIR que introduzca el efecto de eco en una seal de voz
muestreada a 8000Hz. La seal de salida deber estar formada por la seal original y por 3
repeticiones de sta cada 200ms, y con atenuaciones de 0.3 , 0.1 y 0.03 respectivamente. De
acuerdo a ello se pide:
a.- Determinar la respuesta impulsiva del filtro.
b.- Determinar la funcin de sistema del filtro.
c.- Escribir el programa de MATLAB que permita filtrar la seal capturada en un vector X a
travs del filtro requerido No puede utilizar funciones de filtraje de MATLAB.
Problema 30 :
Determinar el H(z) (en potencias negativas de Z) de un filtro FIR rechaza banda de orden 4,
frecuencia de corte inferior de /4 y frecuencia de corte superior de 3/4. Utilice ventanas
rectangulares, luego de ello escribir un programa en MATLAB que permita aplicar el filtro
obtenido a una seal almacenada en un vector X. En el programa no est permitido el uso de
funciones de MATLAB, que realizen el filtraje de una seal generen filtros (como filter, fir1,
butter, etc). El programa deber obtener la seal resultante del filtraje en el vector Y .
Problema 31:
Una seal de audio (msica y voz) fue digitalizada con una frecuencia de muestreo de 24000
Hz y r=16 bits. La captura fue de 5 segundos. La seal fue al almacenada en un vector X.
Para una determinada aplicacin, se requiere aislar solo las frecuencias mas significativas de
la voz, por lo que se decide aplicar un filtro pasa-banda [300Hz 3400Hz] para filtrar la seal
y obtener una seal resultante donde prevalece la seal de voz sobre la seal de audio. El filtro
debe tener orden 100 y no debe utilizarse ventana (se asume ventana rectangular).
De acuerdo a ello se pide:
a.- Implementar un programa en MATLAB que permita obtener la respuesta del filtro FIR
requerido. Recuerde que hay que identificar las frecuencias inferior, central y superior (en
frecuencia relativa) del filtro deseado. Con esas frecuencias se puede obtener la frecuencia
de corte del prototipo pasa-bajas. La respuesta impulsiva de un filtro FIR pasa bajas es
dada por:

'

,
_

,
_

,
_

2
1 L
n 1 L n 0
)
2
1 L
( n
)
2
1 L
( n sen
2
1 L
n
) n ( h
corte
corte
donde L es el numero de coeficientes del filtro.
Nota : Recuerde que para volverlo pasa-banda hay que multiplicar la respuesta impulsiva del
prototipo pasa bajas por 2 y por cos(0n), donde 0 es la frecuencia central del pasa-banda.
b.- Asumiendo que se tiene la respuesta impulsiva del filtro generado en un vector B, se pide
escribir el programa en MATLAB que realiza el filtraje de la seal almacenada en el vector
X. Recuerde que tiene que crear un vector temporal inicial : tempnum=zeros(L,1) ,
donde L es el numero de coeficientes del filtro. NO PUEDE UTILIZAR FUNCIONES DE
MATLAB PARA REALIZAR EL FILTRAJE.
Prof. Dr. Guillermo Kemper V.
Prof. Ing. Christian del Carpio.

S-ar putea să vă placă și