Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PEDRO RUIZGALLO
FACULTAD DE CIENCIAS
FISICAS YMATEMÁTICAS
ESCUELA PROFESIONAL
DE ING.ELECTRÓNICA
ASIGNATURA:
PROCESAMIENTO DIGITAL DE
SEÑALES.
TEMA:
Reconstrucción de señales
ALUMNO:
clear;clc;
t=0:0.5:50;%Señal analogica
f=1/50;
xt=sin(2*pi*f*t);
Fs=2;%Discretizando la señal en el tiempo
Ts=1/Fs;
n=0:Ts:50;
xn=sin(2*pi*f*n);
figure('Name', 'señal discreta x(n)')%Mostrando en pantalla
stem(n,xn)
ran=max(xt)-min(xt); %rango de la señal
nbits=8;%bits de cuantificación
nnivs=(2^nbits)-1; %número de niveles de cuantificación
delta=ran/nnivs; %altura de nivel
nive=min(xt):delta:max(xt);
nivem=nive+delta/2;
N=200;
[A,N]=size(n);
xnq=zeros(1,N);
for i=1:N
j=1;
while xn(i)>nivem(j)
j=j+1;
end
xnq(i)=nive(j);
end
figure('Name','Señal discretizada y señal cuantificada xq(n)')
stem(n,xnq)
hold on
stem(n,xn)
hold off
err=xn-xnq;%error de cuantificación
figure('Name','Error de cuantificación e(n)')
stem(n,err)
SQNR=(3/2)*2^(2*nbits);%SQNR
SQNRdB=10*log10(SQNR);
En los gráficos podemos observar claramente como aumenta y disminuyen el error en los
distintos casos planteados , si aumentamos los niveles de cuantificación el error disminuye
así podemos darnos cuenta que para 256 niveles el error es mínimo.
c) Comparar resultados entre truncamiento y redondeo. Pueden elegir el grupo para
comparar resultados. (10 pts.)
FUNCIONES:
signal.m
function x=signal(t,fo,f1)
x=2*cos(2*pi*fo*t)+0.62*sin(2*pi*f1*t);
impulso.m
function x=impulso(t)
x=(t==0.0)*1.0;
recsinc.m
function x=recsinc(t,tau)
x=1*sinc(t*tau);
pmuestreo.m:
close all
clear all
fo=10;
f1=20;
fmax=10*f1;
t=0:(1/fmax)/40:3*(1/fo);
x=signal(t,fo,f1);
plot(t,x,'linewidth',1.5)
grid on
%Muestreo
Fs=2.5*f1;
Ts=1/Fs;
Nm=floor(max(t)/Ts);
Nms=floor(max(size(t))/Nm);
xx=zeros(size(x));
for i=0:Nm
if i==0
xx=xx+x.*impulso(t);
else
xx=xx+x.*impulso(t-t(i*Nms));
end
end
figure
plot(t,xx,'linewidth',1.5)
hold on
plot(t,x,'linewidth',1.5)
grid on
%Reconstrucci?n
figure
yy=zeros(size(x));
yy1=zeros(size(x));
for i=0:Nm
if i==0
yy=x(1).*recsinc(t,1*Fs);
plot(t,yy)
hold on
grid on
yy1=yy1+yy;
else
yy=x(i*Nms).*recsinc(t-t(i*Nms),1*Fs);
plot(t,yy)
yy1=yy1+yy;
end
end
plot(t,x,'linewidth',3)
plot(t,xx,'linewidth',1.5)
plot(t,yy1,'linewidth',2.5)
b) Determine ¿Qué hace el programa? Explique las líneas de código. Comente los
resultados. (20 pts.)
close all %Es para cerrar las ventanas abiertas por un código anterior
clear all %clear all: las variables se borran, borra el espacio de
trabajo(workspace)
close all
clear all
fo=20;
f1=40;
fmax=10*f1;
t=0:(1/fmax)/40:3*(1/fo);
x=signal2(t,fo,f1);
plot(t,x,'linewidth',1.5)
grid on
%Muestreo
Fs=2.5*f1;
Ts=1/Fs;
Nm=floor(max(t)/Ts);
Nms=floor(max(size(t))/Nm);
xx=zeros(size(x));
for i=0:Nm
if i==0
xx=xx+x.*impulso(t);
else
xx=xx+x.*impulso(t-t(i*Nms));
end
end
figure
plot(t,xx,'linewidth',1.5)
hold on
plot(t,x,'linewidth',1.5)
grid on
%Reconstrucci?n
figure
yy=zeros(size(x));
yy1=zeros(size(x));
for i=0:Nm
if i==0
yy=x(1).*recsinc(t,1*Fs);
plot(t,yy)
hold on
grid on
yy1=yy1+yy;
else
yy=x(i*Nms).*recsinc(t-t(i*Nms),1*Fs);
plot(t,yy)
yy1=yy1+yy;
end
end
plot(t,x,'linewidth',3)
plot(t,xx,'linewidth',1.5)
plot(t,yy1,'linewidth',2.5)
FUNCIONES:
signal.m
function x=signal(t,fo,f1)
x=[4*cos(2*pi*fo*t)-5*sin(2*pi*f1*t)].*t;
impulso.m
function x=impulso(t)
x=(t==0.0)*1.0;
recsinc.m
function x=recsinc(t,tau)
x=1*sinc(t*tau);