You are on page 1of 3

Seales y Sistemas

Codificacin
Alisting en MatLab
clc, close all
r=audiorecorder;
record(r)
stop(r)
play(r)
y=getaudiodata(r);
Fs=r.SampleRate;
wavwrite(y,Fs,'SiHola')
which SiHola.wav
[Ad,fs]=wavread('SiHola.wav');
audioplayer(Ad,fs)
totalmuestras=length(Ad); duracion=totalmuestras/fs;
tt=linspace(0,duracion,totalmuestras);
tt=0:1/fs:duracion; tt=tt(1,1:length(tt)-1);
tinicio=1.007; tfinal=1.009;
figure(1), plot(tt,Ad), title('senal de voz')
figure(2), plot(tt,Ad), title('senal de voz'), xlim([tinicio tfinal])
figure(3), stem(tt,Ad), title('senal PAM1'), xlim([tinicio tfinal])
%1.2
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])
%PROBLEMA 1.3
%El siguiente cdigo de Matlab tiene control sobre el periodo de muestreo
%de una seal de voz introducida por micrfono, con la finalidad de simular
%Aliasing (solapamiento de espectros).
%Genera y diagrama:
%(a) las muestras de la seal espaciadas 250 micro-segundos en un intervalo
%de tiempo de duracin de 2 milisegundos.
%(b) la densidad espectral de potencia de la seal muestreada Cdigo en Matlab
%A continuacin de las lneas de cdigo de generacin de Seal de Voz,
%adicionamos las siguientes lneas de cdigo.

t=0:1/fs:duracion;
Ts=2e-6;
nTs=Ts*1e6;
y=zeros(1,length(t)-1);
y(1,1:nTs:length(y))=1;

% Variable tiempo
% Periodo de muestreo 2x(1/Fs)
% Valores enteros de 125us
% Variable con ceros
% Variable con unos espaciados nTs

YY=Ad(:,1); YY=double(YY);
PAM=YY.*y';
% PAM registra las muestras
t=t(1,1:length(t)-1);
%
figure,stem(t,PAM),
%
axis([tinicio tfinal -1 1]), grid on,
xlabel('Tiempo'),ylabel('Amplitud')
%PROBLEMA 1.4
%Realizar un progrmaa que recontruya una seal de voz apartir de sus
%muestras. La seal de voz muestreada en el intervalo de 1.007 a 1.009
%segundos con una tasa de muestreo de 125microsegundos es recontruida con
%la ecuacion de recontruccion 1.9.
% ****AL PROGRAMA ANTERIOR ADICIONAMOS LAS SIGUIENTES LINEAS DE
CODIGO
at=tinicio/125e-6+1; zt=tfinal/125e-6+1;
PAMc=Ad(at:zt,1);
tc=tt(1,at:zt);
figure, stem(tc,PAMc), %viene una coma en lugar de un punto y coma
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]),
%PROBLEMA 1.5
%Realizar un programa en MatLab que genere la PAM natural a un intervalo de
%seal de voz del 1.1
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('seal de voz y seal al PAM natural'),
xlim([tinicio tfinal]),
hold on, plot(tpn,mpamnat,'r');
xlim([tinicio tfinal]),
%PROBLEMA 1.6
%Generar la seal con muesteo de cretsa plana de la seal. Diagramar la
%seal PAM
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,
plot(tpp,st),xlim([tinicio tfinal]),

You might also like