Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Práctica 1.1.
Crear líneas de código en Matlab para almacenar las amplitudes de voltaje de una señal de
voz (audio) introducida por micrófono en un archivo de extensión. Simulando así una señal
banda base de información.
Diagramar:
1.- La señal de voz, y
2.- La señal muestreada en un intervalo de tiempo cumpliendo con la condición de
muestreo de Nyquist.
Código en Matlab.
clc, close all, clear all
r=audiorecorder; % Se estable un objeto (r) de audio
record(r) % Se graba audio por el micrófono
% Se usa punto de parada en la ejecución
stop(r) % Fin de la grabación
play(r) % Se reproduce la grabación
y=getaudiodata(r); % Amplitudes de la señal de voz
Fs=[Link]; % Frecuencia de muestreo en Hz
audiowrite('[Link]',y,Fs) % Creación de archivo "wav"
which [Link] % Ruta del archivo
[Ad,fs]=audioread('[Link]');
audioplayer(Ad,fs) % Se reproduce la grabación
% Ad: Amplitudes de los
% datos , fs: frecuencia de muestreo
totalmuestras=length(Ad); duracion=totalmuestras/fs;
tt=linspace(0,duracion,totalmuestras);
tt=0:1/fs:duracion;tt=tt(1,1:length(tt)-1);
tinicio=0.807; tfinal=0.809;
figure(1),plot(tt,Ad),title('Señal de voz')
figure(2),plot(tt,Ad),title('Señal de Voz'),xlim([tinicio tfinal])
figure(3),stem(tt,Ad),title('Señal PAM 1'), xlim([tinicio tfinal])
save Ad; save tt;
La señal de voz grabada por el micrófono tiene el aspecto siguiente:
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
1.- Señal de voz.
Amplitud normalizada
Tiemp
o
Las muestras de la señal de voz correspondientes al intervalo de 0.807 a 0.0809 segundos
se presentan en “2.-“.
2.- Señal de voz en el intervalo de 0.807 a 0.809 segundos
Amplitud normalizada
Tiemp
o
2.1- Muestras de amplitud en el intervalo de 0.807 a 0.809 segundos (PAM)
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Amplitud normalizada
Tiemp
o
Como se observa, el espaciamiento entre muestras es de 125 s (microsegundos).
Práctica 1.2.
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Realizar un programa en Matlab que permita obtener el espectro de la señal de voz
introducida por micrófono.
Utilizamos la transformada rápida de Fourier de las muestras de la señal de voz de la
práctica 1.1.
Código en Matlab.
clc, close all, clear all
r=audiorecorder; % Se estable un objeto (r) de audio
record(r) % Se graba audio por el micrófono
% Se usa punto de parada en la ejecución
stop(r) % Fin de la grabación
play(r) % Se reproduce la grabación
y=getaudiodata(r); % Amplitudes de la señal de voz
Fs=[Link]; % Frecuencia de muestreo en Hz
audiowrite('[Link]',y,Fs) % Creación de archivo "wav"
which [Link] % Ruta del archivo
[Ad,fs]=audioread('[Link]');
audioplayer(Ad,fs) % Se reproduce la grabación
% Ad: Amplitudes de los
% datos , fs: frecuencia de muestreo
totalmuestras=length(Ad); duracion=totalmuestras/fs;
tt=linspace(0,duracion,totalmuestras);
tt=0:1/fs:duracion;tt=tt(1,1:length(tt)-1);
tinicio=0.807; tfinal=0.809;
figure(1),plot(tt,Ad),title('Señal de voz')
figure(2),plot(tt,Ad),title('Señal de Voz'),xlim([tinicio tfinal])
figure(3),stem(tt,Ad),title('Señal PAM 1'), xlim([tinicio tfinal])
Tss=1/fs ; L=length(Ad); tmpo=(0:L-1)*Tss;
NFFT=2^nextpow2(L);
Yfft=fft (Ad); frq=fs/2*linspace(0,1,NFFT/2);
figure, plot(frq,abs(Yfft(1:NFFT/2))) %ylim([0 500])
save Ad; save tt;
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
En la siguiente imagen se puede observar el espectro en frecuencia de la señal
de voz introducida por micrófono. Se puede observar que su ancho de banda
está confinado en el intervalo de 0 a 4KHz.
Densidad espectral de potencia
Frecuencia
Práctica 1.3.
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Objetivos.
1.- Obtener las amplitudes de voltaje de una señal de voz introducida por micrófono.
2. Generar el diagrama de la señal de voz a partir de las muestras instantáneas con
frecuencia de muestreo igual a 8000 Hz.
3. Generar el diagrama de la señal en el intervalo activo de 0.807 a 0.809 milisegundos
4. Obtener el espectro de la señal de voz con intervalo de 2 milisegundos de duración.
Resuelva.
1. ¿Cuántas muestras de amplitud se obtienen en cada segundo de grabación
de la señal de voz?
1
8000 muestras. f s=
125 μs
=8000 Hz
2. ¿Cuál es el intervalo de tiempo activo de 2 milisegundos que eligió?
De 0.807 a 0.809
3. Presente la señal de voz que generó.
Amplitud normalizada
Tiemp
o
4. Presente la señal de voz en el intervalo de 2 milisegundos.
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Amplitud normalizada
Tiemp
o
5. Presente las muestras de amplitud (PAM) de la señal de voz en el intervalo
de 2 milisegundos.
Amplitud
normalizada
Tiemp
o
6. Presente el diagrama del espectro
Densidad espectral de de frecuencia de la señal PAM.
potencia
Práctica 1.4. Frecuencia
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Realizar un programa en Matlab que tenga control sobre el periodo de muestreo de una
señal de voz introducida por micrófono, con la finalidad de simular Aliasing (solapamiento
de espectros). Generar y diagramar:
1.-Las muestras de la señal espaciadas 250u segundos en un intervalo de tiempo de
duración de 2 milisegundos.
2.-La densidad espectral de potencia de la señal muestreada
Código en Matlab.
clc, close all, clear all
r=audiorecorder; % Se estable un objeto (r) de audio
record(r) % Se graba audio por el micrófono
% Se usa punto de parada en la ejecución
stop(r) % Fin de la grabación
play(r) % Se reproduce la grabación
y=getaudiodata(r); % Amplitudes de la señal de voz
Fs=[Link]; % Frecuencia de muestreo en Hz
audiowrite('[Link]',y,Fs) % Creación de archivo "wav"
which [Link] % Ruta del archivo
[Ad,fs]=audioread('[Link]');
audioplayer(Ad,fs) % Se reproduce la grabación
% Ad: Amplitudes de los
% datos , fs: frecuencia de muestreo
totalmuestras=length(Ad); duracion=totalmuestras/fs;
tt=linspace(0,duracion,totalmuestras);
tt=0:1/fs:duracion;tt=tt(1,1:length(tt)-1);
tinicio=0.807; tfinal=0.809;
figure(1),plot(tt,Ad),title('Señal de voz')
figure(2),plot(tt,Ad),title('Señal de Voz'),xlim([tinicio tfinal])
figure(3),stem(tt,Ad),title('Señal PAM 1'), xlim([tinicio tfinal])
Tss=1/fs ; L=length(Ad); tmpo=(0:L-1)*Tss;
NFFT=2^nextpow2(L);
Yfft=fft (Ad); frq=fs/2*linspace(0,1,NFFT/2);
figure, plot(frq,abs(Yfft(1:NFFT/2))) %ylim([0 500])
save Ad; save tt;
t=0:1/fs: duracion ; % Variable tiempo
Ts=2e-6; %Periodo de muestreo
nTs=Ts*1e6; %Valores enteros de 125us
y=zeros(1,length(t)-1); %Variable con ceros
y(1,1:nTs:length(y))=1; %Variable con unos espaciados nTs
YY=Ad(:,1); YY=double (YY);
PAM=YY.*y'; %PAM regi1stra las muestras
t=t(1,1:length(t)-1); %
figure, stem(t,PAM), %
axis ([tinicio tfinal -1 1]), grid on,%
xlabel('Tiempo'),ylabel('Amplitud')
save Ad; save tt;
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Amplitud
normalizada
Tiemp
1. o en un intervalo de tiempo de duración de 2 milisegundos.
muestras de la señal espaciadas 250u segundos
Densidad espectral de potencia
Frecuencia
2. Densidad espectral de potencia de la señal muestreada
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Práctica 1.5. Solapamiento de espectros de frecuencia.
Objetivos.
1. Obtener el espectro de frecuencias de la señal de voz introducida por micrófono.
2. Generar las muestras de su señal de voz con periodo de muestreo:
125 microsegundos (1Ts)
250 microsegundos (2Ts)
375 microsegundos (3Ts)
3.-Obtener el diagrama de Espectro en Frecuencia de cada caso anterior y visualizar el
efecto Aliasing.
Resuelva:
1.-¿Cuántas muestras PAM con periodo de muestreo T s obtiene en el intervalo de 2
milisegundos?
Se obtienen 16 muestras.
2.-Indique en una tabla las amplitudes de las muestras del resultado 1.
Muestra 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Amplitud 0 0.0312 0.05468 0.07812 0.0781 0.0625 0.03906 0.0078 -0.039 -0.06 -0.078 -0.13 -0.0937 -0.085 -0.070 -0.0859
5
3.-Presente diagrama de la señal de voznormalizada
Amplitud PAM completa.
Tiemp
4.-Presente el espectro de la señal PAM deloresultado 1.
Densidad espectral de potencia
Frecuencia
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Densidad espectral de potencia
5.-Obtener los resultados de 1 a 4 para el 2do objetivo de la presente práctica.
o 125 milisegundos
Densidad espectral de potencia
Frecuencia
o 250 milisegundos
Frecuencia
o 375 milisegundos
Densidad espectral de potencia
Frecuencia
o 500 milisegundos
Densidad espectral de
potencia
Frecuencia
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Práctica 1.6. Reconstrucción de la señal a partir de sus
muestras
La señal de voz muestreada en el intervalo de 1.007 a 1.009 segundos con una tasa de
muestreo de 125 microsegundos es reconstruida con la ecuación de reconstrucción 1.9. Al
código Matlab del problema anterior se adiciona las siguientes líneas de código.
Código en Matlab.
clc, close all, clear all
r=audiorecorder; % Se estable un objeto (r) de audio
record(r) % Se graba audio por el micrófono
% Se usa punto de parada en la ejecución
stop(r) % Fin de la grabación
play(r) % Se reproduce la grabación
y=getaudiodata(r); % Amplitudes de la señal de voz
Fs=[Link]; % Frecuencia de muestreo en Hz
audiowrite('[Link]',y,Fs) % Creación de archivo "wav"
which [Link] % Ruta del archivo
[Ad,fs]=audioread('[Link]');
audioplayer(Ad,fs) % Se reproduce la grabación
% Ad: Amplitudes de los
% datos , fs: frecuencia de muestreo
totalmuestras=length(Ad); duracion=totalmuestras/fs;
tt=linspace(0,duracion,totalmuestras);
tt=0:1/fs:duracion;tt=tt(1,1:length(tt)-1);
tinicio=0.807; tfinal=0.809;
figure(1),plot(tt,Ad),title('Señal de voz')
figure(2),plot(tt,Ad),title('Señal de Voz'),xlim([tinicio tfinal])
figure(3),stem(tt,Ad),title('Señal PAM 1'), xlim([tinicio tfinal])
Tss=1/fs ; L=length(Ad); tmpo=(0:L-1)*Tss;
NFFT=2^nextpow2(L);
Yfft=fft (Ad); frq=fs/2*linspace(0,1,NFFT/2);
figure, plot(frq,abs(Yfft(1:NFFT/2))) %ylim([0 500])
save Ad; save tt;
t=0:1/fs: duracion ; % Variable tiempo
Ts=4e-6; %Periodo de muestreo
nTs=Ts*1e6; %Valores enteros de 125us
y=zeros(1,length(t)-1); %Variable con ceros
y(1,1:nTs:length(y))=1; %Variable con unos espaciados nTs
YY=Ad(:,1); YY=double (YY);
PAM=YY.*y'; %PAM regi1stra las muestras
t=t(1,1:length(t)-1); %
figure, stem(t,PAM), %
axis ([tinicio tfinal -1 1]), grid on,%
xlabel('Tiempo'),ylabel('Amplitud')
Tss=1/fs ; L=length(PAM); tmpo=(0:L-1)*Tss;
NFFT=2^nextpow2(L);
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Yfft=fft (PAM); frq=fs/2*linspace(0,1,NFFT/2);
figure, plot(frq,abs(Yfft(1:NFFT/2))) %ylim([0 500])
at=tinicio/125e-6+1; zt=tfinal/125e-6+1; %
PAMc=Ad(at:zt,1);
tc=tt(1,at:zt);
figure,stem(tc,PAMc),
duracionPAMc=length(PAMc)/fs;
lim=tinicio:0.1e-6:tfinal;
llim=length(lim);
tr=linspace(0,duracionPAMc,llim);
sm=zeros(1,length(tr));
for k=1:length(PAMc)
swtr=sin(2*pi*4e3*(tr-k/fs))./(2*pi*4e3*(tr-k/fs));
sm=sm++PAMc(k,1)*swtr;
end
tsm=linspace(tinicio,tfinal,length(sm));
hold on,
plot (tsm,sm),
xlim([tinicio tfinal])
save Ad; save tt;
1.-Reconstrucción de la señal a partir de sus muestras espaciadas 125s.
Amplitud normalizada
Tiempo
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Práctica 1.7. Reconstrucción de la señal de voz a partir de sus
muestras.
Objetivos.
1. Obtener la reconstrucción de la señal de voz a partir de las muestras PAM
instantáneas.
2. Obtener la reconstrucción de la señal de voz en los dos milisegundos que definió en
las prácticas anteriores.
3. Obtener el diagrama del Espectro en Frecuencia de la señal de voz reconstruida.
Resuelva:
1. Presente el diagrama de las muestras PAM de su señal de voz.
Amplitud
Tiemp
o
2. Presente el diagrama de las muestras PAM en los 2 milisegundos.
Amplitud
Tiempo
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
3. Presente el diagrama de la señal de voz reconstruida a partir de sus muestras en el
intervalo de 2 ms.
Amplitud
Tiempo
4. Presente el espectro deDensidad espectral de potencia
frecuencias de la señal PAM.
Frecuencia
5. Presente el espectro de frecuencias de la señal reconstruida a partir de las muestras
PAM Densidad espectral de potencia
Frecuencia
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Práctica 1.8. Reconstrucción de la señal de voz a partir de sus
muestras.
Crear líneas de código en Matlab para generar la señal con muestreo de cresta plana ed al
señal del problema 16. Diagramar la señal PAM.
Código en MATLAB.
r=audiorecorder; % Se estable un objeto (r) de audio
record(r) % Se graba audio por el micrófono
%Se usa punto de parada en la ejecución
stop(r) % Fin de la grabación
play(r) % Se reproduce la grabación
y=getaudiodata(r); % Amplitudes de la señal de voz
Fs=[Link]; % Frecuencia de muestreo en Hz
audiowrite('[Link]',y,Fs) % Creación de archivo "wav"
which [Link] % Ruta del archivo
[Ad,fs]=audioread('[Link]');
audioplayer(Ad,fs) % Se reproduce la grabación
%Ad: Amplitudes de los
%datos , fs: frecuencia de muestreo
totalmuestras=length(Ad); duracion=totalmuestras/fs;
tt=linspace(0,duracion,totalmuestras);
tt=0:1/fs:duracion;tt=tt(1,1:length(tt)-1);
tinicio=0.807; tfinal=0.809;
figure(1),plot(tt,Ad),title('Señal de voz')
figure(2),plot(tt,Ad),title('Señal de Voz'),xlim([tinicio tfinal])
figure(3),stem(tt,Ad),title('Señal PAM 1'), xlim([tinicio tfinal])
Tss=1/fs ; L=length(Ad); tmpo=(0:L-1)*Tss;
NFFT=2^nextpow2(L);
Yfft=fft (Ad); frq=fs/2*linspace(0,1,NFFT/2);
figure, plot(frq,abs(Yfft(1:NFFT/2))) %ylim([0 500])
save Ad; save tt;
t=0:1/fs: duracion ; % Variable tiempo
Ts=4e-6; %Periodo de muestreo
nTs=Ts*1e6; %Valores enteros de 125us
y=zeros(1,length(t)-1); %Variable con ceros
y(1,1:nTs:length(y))=1; %Variable con unos espaciados nTs
YY=Ad(:,1); YY=double (YY);
PAM=YY.*y'; %PAM regi1stra las muestras
t=t(1,1:length(t)-1); %
figure, stem(t,PAM), %
axis ([tinicio tfinal -1 1]), grid on,%
xlabel('Tiempo'),ylabel('Amplitud')
Tss=1/fs ; L=length(PAM); tmpo=(0:L-1)*Tss;
NFFT=2^nextpow2(L);
Yfft=fft (PAM); frq=fs/2*linspace(0,1,NFFT/2);
figure, plot(frq,abs(Yfft(1:NFFT/2))) %ylim([0 500])
at=tinicio/125e-6+1; zt=tfinal/125e-6+1; %
PAMc=Ad(at:zt,1);
tc=tt(1,at:zt);
figure,stem(tc,PAMc),
duracionPAMc=length(PAMc)/fs;
lim=tinicio:0.1e-6:tfinal;
llim=length(lim);
tr=linspace(0,duracionPAMc,llim);
sm=zeros(1,length(tr));
for k=1:length(PAMc)
swtr=sin(2*pi*4e3*(tr-k/fs))./(2*pi*4e3*(tr-k/fs));
sm=sm++PAMc(k,1)*swtr;
end
tsm=linspace(tinicio,tfinal,length(sm));
hold on,
plot (tsm,sm),
xlim([tinicio tfinal])
Tss=1/fs ; L=length(PAMc); tmpo=(0:L-1)*Tss;
NFFT=2^nextpow2(L);
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Yfft=fft (PAMc); frq=fs/2*linspace(0,1,NFFT/2);
figure, plot(frq,abs(Yfft(1:NFFT/2))) %ylim([0 500])
a=1;
fss=1/125e-6;
dc=50;
frq=fss*2*pi;
tpn=tinicio:0.1e-6:tfinal;
trenrect=a*square(frq*tpn,dc);
trenrect=0.5*(trenrect+1);
mpamnat=sm.*trenrect;
figure(5),plot(tsm,sm),
title('señal de voz y señal PAM natural')
xlim([tinicio tfinal])
hold on,plot(tpn,mpamnat,'r');
xlim([tinicio tfinal]),
save Ad; save tt;
Amplitud
Tiempo
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Práctica 1.9. Muestreo natural.
Objetivo
1.- Obtener la señal PAM natural de su señal de voz reconstruida a partir de sus muestras.
Resuelva:
1.- Presente el diagrama de las muestras PAM natural de su señal de voz correspondiente a
los 2 milisegundos.
Amplitud
Tiempo
2. A partir de la gráfica de la señal anterior, realice una tabla con los valores de las
amplitudes de las muestras y sus correspondientes tiempos. El segundo decimal de las
amplitudes debe estar redondeado con el tercer decimal. Por ejemplo, para la muestra en el
tiempo 1,0076 segundos con amplitud -0,2943 considerar la amplitud -0,29.
Muestra 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Amplitud 0 0.031 0.055 0.078 0.078 0.063 0.040 0.008 -0.039 -0.06 -0.078 -0.13 -0.094 -0.085 -0.070 -0.086
3.- Presente el diagrama de su señal de voz reconstruida a partir de sus muestras en el
intervalo de 2 ms. En la misma figura dejar las muestras de tiempo discreto de su señal de
voz.
4.- Presente el espectro de la señal PAM natural.
Amplitud
Tiempo
Martínez Vázquez Uriel Gustavo
Densidad espectral de potencia 6CV3 8/04/2024
Frecuencia
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Práctica 1.10. Crear líneas de código en Matlab para generar la
señal con muestreo de cresta plana de la señal. Diagramar la
señal PAM.
r=audiorecorder; % Se estable un objeto (r) de audio
record(r) % Se graba audio por el micrófono
%Se usa punto de parada en la ejecución
stop(r) % Fin de la grabación
play(r) % Se reproduce la grabación
y=getaudiodata(r); % Amplitudes de la señal de voz
Fs=[Link]; % Frecuencia de muestreo en Hz
audiowrite('[Link]',y,Fs) % Creación de archivo "wav"
which [Link] % Ruta del archivo
[Ad,fs]=audioread('[Link]');
audioplayer(Ad,fs) % Se reproduce la grabación
%Ad: Amplitudes de los
%datos , fs: frecuencia de muestreo
totalmuestras=length(Ad); duracion=totalmuestras/fs;
tt=linspace(0,duracion,totalmuestras);
tt=0:1/fs:duracion;tt=tt(1,1:length(tt)-1);
tinicio=0.807; tfinal=0.809;
figure(1),plot(tt,Ad),title('Señal de voz')
figure(2),plot(tt,Ad),title('Señal de Voz'),xlim([tinicio tfinal])
figure(3),stem(tt,Ad),title('Señal PAM 1'), xlim([tinicio tfinal])
Tss=1/fs ; L=length(Ad); tmpo=(0:L-1)*Tss;
NFFT=2^nextpow2(L);
Yfft=fft (Ad); frq=fs/2*linspace(0,1,NFFT/2);
figure, plot(frq,abs(Yfft(1:NFFT/2))) %ylim([0 500])
save Ad; save tt;
t=0:1/fs: duracion ; % Variable tiempo
Ts=4e-6; %Periodo de muestreo
nTs=Ts*1e6; %Valores enteros de 125us
y=zeros(1,length(t)-1); %Variable con ceros
y(1,1:nTs:length(y))=1; %Variable con unos espaciados nTs
YY=Ad(:,1); YY=double (YY);
PAM=YY.*y'; %PAM regi1stra las muestras
t=t(1,1:length(t)-1); %
figure, stem(t,PAM), %
axis ([tinicio tfinal -1 1]), grid on,%
xlabel('Tiempo'),ylabel('Amplitud')
Tss=1/fs ; L=length(PAM); tmpo=(0:L-1)*Tss;
NFFT=2^nextpow2(L);
Yfft=fft (PAM); frq=fs/2*linspace(0,1,NFFT/2);
figure, plot(frq,abs(Yfft(1:NFFT/2))) %ylim([0 500])
at=tinicio/125e-6+1; zt=tfinal/125e-6+1; %
PAMc=Ad(at:zt,1);
tc=tt(1,at:zt);
figure,stem(tc,PAMc),
duracionPAMc=length(PAMc)/fs;
lim=tinicio:0.1e-6:tfinal;
llim=length(lim);
tr=linspace(0,duracionPAMc,llim);
sm=zeros(1,length(tr));
for k=1:length(PAMc)
swtr=sin(2*pi*4e3*(tr-k/fs))./(2*pi*4e3*(tr-k/fs));
sm=sm++PAMc(k,1)*swtr;
end
tsm=linspace(tinicio,tfinal,length(sm));
hold on,
plot (tsm,sm),
xlim([tinicio tfinal])
Tss=1/fs ; L=length(PAMc); tmpo=(0:L-1)*Tss;
NFFT=2^nextpow2(L);
Yfft=fft (PAMc); frq=fs/2*linspace(0,1,NFFT/2);
figure, plot(frq,abs(Yfft(1:NFFT/2))) %ylim([0 500])
a=1;
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
fss=1/125e-6;
dc=50;
frq=fss*2*pi;
tpn=tinicio:0.1e-6:tfinal;
trenrect=a*square(frq*tpn,dc);
trenrect=0.5*(trenrect+1);
mpamnat=sm.*trenrect;
figure(5),plot(tsm,sm),
title('señal de voz y señal PAM natural')
xlim([tinicio tfinal])
hold on,plot(tpn,mpamnat,'r');
xlim([tinicio tfinal]),
save Ad; save tt;
% Parámetros del pulso rectangular
tau = Tss/2;
taumedios = tau/2;
% Frecuencia de muestreo
Fs = 1/(tpn(2) - tpn(1));
% Crear pulso rectangular en el dominio del tiempo
t = -3*tau:1/Fs:3*tau;
ht = rectpuls(t-tau, tau);
% Calcular la Transformada de Fourier del pulso rectangular
Hf = fft(ht);
% Calcular las frecuencias correspondientes
f = linspace(-Fs/2, Fs/2, length(Hf));
% Graficar el espectro
figure;
plot(f, abs(fftshift(Hf)));
xlabel('Frecuencia (Hz)');
ylabel('Densidad de potencia');
title('Espectro de PAM natural')
tpp=tpn;
st=zeros(1,length(tpp));
tau=Tss/2; taumedios=tau/2;
nTss=tinicio:Tss:tfinal;
ht=rectpuls(tpp-tau,tau);
for pq=1:length(PAMc),
nTs=nTss(pq);
rp=rectpuls(tpp-nTs,tau);
st=st+PAMc(pq,1)*rp;
end
figure, stem(tc,PAMc), hold on,
plot(tpp,st),xlim([tinicio tfinal]),
Amplitud
Tiempo
Práctica 1.11. Muestreo de cresta plana.
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Objetivo
1.-Obtener al señal PAM de Cresta Plana de su señal de voz
reconstruida a partir de sus muestras.
Resuelva:
1.- Presente el diagrama de las muestras PAM de Cresta Plana de
su señal de voz correspondiente a los 2 milisegundos.
Amplitud
Tiempo
2.- Presente el espectro dedelapotencia
Densidad espectral señal PAM de cresta plana.
Frecuencia
Práctica 1.12.
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Aplicar la cuantización logarítmica Ley A a las muestras del intervalo de 2 milisegundos del
problema anterior y mostrar un diagrama que represente las muestras de entrada y salida al
cuantizador.
Código en MATLAB.
m=Ad*128;
A=87.6; tA=tt ’;
for mn=1 : length(Ad),
pam=Ad(mn,1); mm=m(mn,1); Tiempo Amplitud Amplitud
if abs (pam)<=(1/A), V(mn,1)=A/(1+log(A))*pam; end
if abs (pam)>=(1/A), sin Ley A con Ley A
numv=1+log(A*abs(pam)); denv=1+log(A); 0.80725 0.031 0.366732
V(mn,1)=numv/denv.*sign(mm);
end 0.80737 0.055 0.468987
end 0.8075 0.078 0.534159
figure(7), stem(tt,Ad,’r’), hold on
stem(tA,V), axis ([tinicio tfinal -1 1]), 0.80762 0.078 0.534159
0.80775 0.063 0.493386
0.807875 0.040 0.407506
0.808 0.008 0.125051
0.80812 -0.039 -0.240079
Amplitud 0.80825 -0.06 -0.407506
0.80837 -0.078 -0.493386
0.8085 -0.13 -0.534159
0.80862 -0.094 -0.567473
0.80875 -0.085 -0.551574
0.80887 -0.070 -0.514907
0.809 -0.086 -0.468987
Tiempo
Práctica 1.13.
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Aplicar la codificación logarítmica Ley y a las muestras del intervalo de tiempo de 2
milisegundos del anterior problema y desplegar un diagrama con las muestras cuantizadas por
Ley A y Ley u.
Código en MATLAB.
m=Ad*128;
miu=255; tmiu=tt’;
num=log(1+miu*bs(Ad)); den=log(1+miu);
ymiu=num./den.*sign(m);
figure(8), stem(tA,V, ‘r’), hold on,
stem(tmiu, ymiu), axis([tinicio Tfinal -1 1]),
Amplitud
Tiempo
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Práctica 1.14.
Aplicar cuantización uniforme midrise a la señal con compresión Ley del problema anterior.
Realizar el diagrama del error de normalización.
El vector que contiene las amplitudes de las muestras comprimidas en el intervalo de 1- a +1
voltio se multiplica por 128 para obtener amplitudes en el intervalo de +128 a
-128 voltios, lo que representa un total de 256 niveles cuánticos.
Código en MATLAB.
% Señal original
vnp = double(V * 128);
% Parámetros de cuantización
Vmax = max(vnp);
Vmin = min(vnp);
Tiempo Amplitud Amplitud
n = 8;
L = 2^n;
original
dlt = (Vmax - Vmin) / L;
0.80725 0.031 47.145
% Cuantización uniforme midrise
vq_midrise = Vmin + dlt/2 + dlt * floor((vnp - Vmin) / dlt); 0.80737 0.055 60.0808
% Calcular el error de cuantización 0.8075 0.078 68.1657
error = vnp - vq_midrise;
% Graficar señales y error de normalización
0.80762 0.078 68.165
figure;
subplot(2, 1, 1);
0.80775 0.063 63.3148
stem(tt, vnp, 'r');
hold on;
0.807875 0.040 51.9959
stem(tt, vq_midrise, 'g');
xlim([tinicio tfinal]); 0.808 0.008 15.6138
xlabel('Tiempo');
ylabel('Amplitud'); 0.80812 -0.039 -30.4701
legend('Señal Original', 'Señal Cuantizada');
title('Cuantización Uniforme Midrise'); 0.80825 -0.06 -52.2993
subplot(2, 1, 2);
plot(tt, error);
0.80837 -0.078 -62.8097
xlim([tinicio tfinal]);
xlabel('Tiempo');
0.8085 -0.13 -68.4691
ylabel('Error de Normalización');
title('Diagrama del Error de Normalización'); 0.80862 -0.094 -72.5116
0.80875 -0.085 -70.8946
0.80887 -0.070 -66.0437
0.809 -0.086 -60.3842
Martínez Vázquez Uriel Gustavo 6CV3 8/04/2024
Práctica 1.11.
Realizar un programa en Matlab que implemente la codificación y decodificación DPCM sobre
la señal de voz en el intervalo de 2 milisegundos.
Código en MATLAB.
sm=sm(1,1:length(sm)-1);
predictor = [0 1]; % y(k)=x(k-1)
partition = [-1:.1:.9];
codebook = [-1:.1:1];
% Original signal
% Quantize x using DPCM.
encodesm = dpcmenco(sm,codebook,partition,predictor);
% Try to recover x from the modulated signal.
decodesm = dpcmdeco(encodesm,codebook,predictor);
t=linspace(tinicio,tfinal,length(sm));
figure(17), plot(t,sm,t,decodesm,'--')
axis([tinicio tfinal -1 1]), grid on,
distor = sum((sm-decodesm).^2)/length(sm)