You are on page 1of 12

PROCESAMIENTO DIGITAL DE SEALES

MATLAB SORIA
Nombre: Oscar Rodriguez
Nivel: Quinto Carrera: Electrnica e Instrumentacin
Fecha: 20/06/17 Paralelo: A

Tema: Ejercicios cap. 3 del libro de Soria

FILTRO
En este punto se implementar a un sistema digital que realice un moving-average",
cuyo orden de promediado se pasa al programa. Se comprueba el funcionamiento
del sistema usando como entrada la suma de sinusoides de frecuencias 50, 100 y
125Hz (frecuencia de muestreo igual a 500 Hz), usando como rdenes del
promediado 4, 10 y 20. Se explicar el resultado en funcin de la posicin de polos
y ceros de la transformada Z del sistema.
CODIGO
N=input('Longitud de la secuencia a filtrar');
mu=input('Parametro del sistema'); x=cos(2*pi*0.1*(0:N-1));
%salida usando la respuesta de frecuencia ycom=1/[1-
mu*exp(-0.2*pi*j)]; y=abs(ycom)*cos(0.2*pi*(0:N-
1)+angle(ycom)); %salida usando la ecuacion en diferencias
yy=zeros(1,N);
yy(1)=x(1); for
t=2:N,
yy(t)=x(t)+mu*yy(t-1);

end

%representacion de secuencias
subplot(2,1,1),stem(y,'o-')

title('secuencia usando la respuesta en frecuencia');


subplot(2,1,2),stem(yy,'o-')

title('Secuencia usando la ecuacion en diferencias');


PROCESAMIENTO DIGITAL DE SEALES

SEGUNDA DERIVADA

Se pide determinar la salida del sistema cuando la entrada es x(n) = cos(pi*n). Se


calcular a dicha salida con diferentes mtodos, pasando la seal por el sistema
implementado mediante ecuacin en diferencias, usando la respuesta en frecuencia
del sistema y, finalmente, usando la instruccin filter. El programa en MATLAB que
implementa el sistema en forma de ecuacin en diferencias es:
CDIGO
clc clear
close all
a=0.9;

%generacion del pulso


x=0.5*ones(1,256); for
t=1:10,

uk=2*pi*t/256;
x=x+cos(uk*((1:256)-129));

end

%determinacion de la salida
y=zeros(1,256);

y(1)=x(1); for
k=2:256,

y(k)=-a*x(k)+x(k-1)+a*y(k-1);

end subplot(2,1,1)
stem(-128:127,x)

title('seal de entrada')
subplot(2,1,2) stem(-128:127,y)
title('seal de salida')
PROCESAMIENTO DIGITAL DE SEALES

CODIGO
clc clear
close all
a=0.9;

%generacion del pulso


x=0.5*ones(1,256); for
t=1:10,

uk=2*pi*t/256;
x=x+cos(uk*((1:256)-129));
end

%determinacion de la salida
y=zeros(1,256); yy=[zeros(1,19) x];

for k=2:256, y(k)=0.05*sum(yy(k+19:-1:k));

end subplot(121),stem(-128:127,x)
title('seal de entrada') grid
hold on subplot(122),stem(-128:127,y,'o-') grid
title('seal de salida')
PROCESAMIENTO DIGITAL DE SEALES

OSCILADOR

Se quiere implementar un oscilador muy sencillo cuya respuesta impulsional viene


dada por:
h(n)= {-1,1,-1,1,-1,}
Se pide
a) Ecuacin en diferencias del sistema. Comprobar su funcionamiento usando
MATLAB.
b) Respuesta en frecuencia del sistema mediante la posicin de polos y ceros de la
Transformada Z del sistema.
c) Comprobar el punto b) mediante la instruccin freqz.
CDIGO
clc
clear
a=input('Introduccion del factor a'); N=input('Introduccion
del orden de la DTF'); v=2*pi*(0:N-1)/N;

Xk=1./(1-a*exp(-j*v));
xx=ifft(Xk); xx=real(xx);
subplot(2,1,1) stem(a.^(0:N-
1),'o-') title('SEAL ORIGINAL')
subplot(2,1,2)
stem(xx,'o-')
title('SEAL OBTENIDA DEL MUESTREO')
xlabel('Muestras')
PROCESAMIENTO DIGITAL DE SEALES

EFECTO DE AUDIO

A la hora de implementar este eco en MATLAB hay que introducir tres parmetros:
la seal a filtrar, el retardo D y el factor de ganancia k. El siguiente programa
implementa este tipo de eco:
CODIGO
close all clc
f1=90;
f2=100;
f3=240;
f4=360;
fm=input('Frecuencia de muestreo(Hz)='); tt=input('Duracion del
muestreo(ms)='); N=input('Longitud de la DTF aumentada =');
t=(fm*tt)*0.001; x1=cos(2*pi*(f1/fm)*(0:t-1))+cos(2*pi*(f2/fm)*(0:t-1));
x2=x1+cos(2*pi*(f3/fm)*(0:t-1))+cos(2*pi*(f4/fm)*(0:t-1)); y=fft(x2);

t1=0:(fm/t):fm-(fm/t); plot(t1,abs(y),'*-r');
yy=fft(x2,N);

hold on t2=0:(fm/N):fm-(fm/N);
plot(t2,abs(yy),'+-k')

axis([0 fm/2 0 max([abs(y) abs(yy)])]); grid,zoom on

You might also like