Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CON MATLAB
1
http://lonely113.blogspot.com
Donde:
Fs=1/Ts: Frecuencia de muestreo.
La grfica de seales discretas se realiza con el comando:
stem(t,xt)
http://lonely113.blogspot.com
>> F0=400;
>> A=2;
>> phi=pi/4;
>> Fs=8000;
>> Ts=1/Fs;
>> t=-0.002:Ts:0.002;
>> xt=A*sin(2*pi*F0*t+phi);
>> stem(t,xt)
0.5
0
-0.5
-1
-1.5
-2
-2
-1.5
-1
-0.5
0.5
1.5
2
-3
x 10
http://lonely113.blogspot.com
http://lonely113.blogspot.com
0.8
0.6
0.4
0.2
x(t)
>> F0=400;
>> A=2;
>> Fs=8000;
>> Ts=1/Fs;
>> t=-0.002:Ts:0.002;
>> xt=sawtooth(2*pi*F0*t);
>> stem(t,xt)
>> hold on
>> plot(t,xt)
>> xlabel('time (s)');
>> ylabel('x(t)');
0
-0.2
-0.4
-0.6
-0.8
-1
-2
-1.5
-1
-0.5
0
time (s)
0.5
1.5
2
-3
x 10
>> F0=400;
>> A=2;
>> Fs=8000;
>> Ts=1/Fs;
>> t=-0.003:Ts:0.003;
>> xt=A*sinc(2*F0*t);
>> stem(t,xt)
1.5
0.5
-0.5
-3
-2
-1
3
-3
x 10
http://lonely113.blogspot.com
Generacin de Ruido
6
x 10
3.5
3
>> Gnoise=randn(1,1e6);
>> hist(Gnoise,100);
2.5
2
1.5
1
0.5
0
-6
http://lonely113.blogspot.com
-4
-2
Submuestreo y Sobremuestro
8
Submuestreo
xtDown=downsample(xt,N)
La seal xDown tendr una frecuencia de muestro Fs/N.
Submuestrear la seal significa conservar cada N-sima muestra y eliminar las muestras
restantes.
Sobremuestreo
xtUp=upsample(xt,N)
La seal xUp tendr una frecuencia de muestreo NFs.
http://lonely113.blogspot.com
Ejemplo: Submuestreo.
9
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-2
-1.5
-1
-0.5
0.5
1.5
2
-3
x 10
http://lonely113.blogspot.com
Procesamiento de Audio
10
>> soundsc(xt,Fs)
http://lonely113.blogspot.com
Grabacin de Audio
11
Ejemplo:
12
>> r=audiorecorder;
>> record(r)
>> pause(r)
>> record(r)
>> stop(r)
>> play(r)
>> y=getaudiodata(r);
>> Fs=r.SampleRate
Fs =
8000
http://lonely113.blogspot.com
http://lonely113.blogspot.com
Para leer un archivo de audio en formato wav que se encuentra en la carpeta de trabajo de
Matlab se utiliza la funcin:
[xt,Fs]=wavread(nombre_de_archivo)
Se guardan las muestras y la frecuencia de muestro en xt y Fs respectivamente.
>> [xt,Fs]=wavread('tuner1');
http://lonely113.blogspot.com
Anlisis en Frecuencia
15
Comandos adicionales:
magxF=abs(xF): Magnitud de la fft de xt.
phasexF=angle(xF): Fase de la fft de xt.
phasexF=unwrap(phasexF): Para obtener la apropiada
informacin de fase.
http://lonely113.blogspot.com
>> Fs=2000;
>> Ts=1/Fs;
>> t=-0.005:Ts:0.005;
>> xt=rectpuls(t,0.004);
>> nFFT=64;
>> xF=fft(xt,nFFT);
>> magxF=abs(xF);
>> phasexF=angle(xF);
>> phasexF=unwrap(phasexF);
>> figure,stem(magxF);
>>title(Magnitud de xF)
>> figure,stem(phasexF)
>>title(Fase de xF)
7
6
5
4
3
2
1
0
10
20
30
40
50
60
70
50
60
70
Fase de xF
0
-5
-10
-15
-20
-25
-30
-35
-40
http://lonely113.blogspot.com
10
20
30
40
7
6
5
4
3
2
1
>> magxF=fftshift(magxF);
>> phasexF=fftshift(phasexF);
>> stem(magxF);
>>title(Magnitud de xF)
>> figure,stem(phasexF);
>>title(Fase de xF)
10
20
30
40
50
60
70
50
60
70
Fase de xF
0
-5
-10
-15
-20
-25
-30
-35
-40
http://lonely113.blogspot.com
10
20
30
40
7
6
5
4
3
2
1
>> f_esp=Fs/nFFT;
>> fNyquist=Fs/2;
>> f_inicio=-fNyquist;
>> f_fin=fNyquist-f_esp;
>> f_eje=f_inicio:f_esp:f_fin;
>> stem(f_eje,magxF)
>> figure,stem(f_eje,phasexF)
0
-1000
-600
-400
-200
0
200
Fase de xF
-800
-600
-400
-200
400
600
800
1000
400
600
800
1000
0
-5
-10
-15
-20
-25
-30
-35
-40
-1000
http://lonely113.blogspot.com
-800
200
Sistemas LTI
19
http://lonely113.blogspot.com
En el dominio Z
Funcin de transferencia
en el dominio Z
http://lonely113.blogspot.com
en Matlab:
>> num=[1 1.1];
>> den=[1 0 -0.1];
http://lonely113.blogspot.com
Impz(num,den): Grafica la respuesta al impulso del filtro. Por defecto se considera Fs=1 Hz y
grafica las 10 primeras muestras.
1.2
Amplitude
0.8
0.6
0.4
0.2
0.5
3
4
n (samples)
1.4
1.2
0.8
0.6
0.4
0.2
1.5
2.5
3.5
4
-3
x 10
http://lonely113.blogspot.com
y=filter(num,den,x)
Donde: x es la seal de entrada.
http://lonely113.blogspot.com
Ejemplo:
25
Espectro de xt
35
30
25
20
15
10
>> [xt,Fs]=wavread('tuner1');
>> [h,t]=impz(num,den,10,Fs);
>> y1=convn(h,xt);
>> soundsc(xt,Fs);
>> soundsc(y1,Fs);
>> y2=filter(num,den,xt);
>> soundsc(xt,Fs);
>> soundsc(y2,Fs);
5
0
0
500
1000
1500
2000
2500
3000
3500
4000
Espectro de y2
80
70
60
50
40
30
20
10
0
500
http://lonely113.blogspot.com
1000
1500
2000
2500
3000
3500
4000
Respuesta de magnitud:
Respuesta de fase:
Retardo de grupo:
http://lonely113.blogspot.com
http://lonely113.blogspot.com
10
-10
-20
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
Phase (degrees)
0
-50
-100
-150
-200
10
Magnitude (dB)
-10
-20
500
1000
1500
2000
2500
Frequency (Hz)
3000
3500
4000
500
1000
1500
2000
2500
Frequency (Hz)
3000
3500
4000
Phase (degrees)
0
-50
-100
-150
-200
http://lonely113.blogspot.com
http://lonely113.blogspot.com
10
>> [G,F]=grpdelay(num,den);
>> grpdelay(num,den);
>> figure,grpdelay(num,den,1024,Fs);
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
12
10
http://lonely113.blogspot.com
500
1000
1500
2000
2500
Frequency (Hz)
3000
3500
4000
http://lonely113.blogspot.com
[z,p,k]=tf2zp(num,den)
Dnde los vectores:
z: ceros
p: polos
k: ganancia de cada numerador de tf.
De manera inversa:
[num,den]=zp2tf(z,p,k)
http://lonely113.blogspot.com
Se utiliza el comando:
zplane(z,p)
Si hay polos fuera del crculo unitario significa que el sistema es inestable.
Continuando con el ejemplo anterior:
1
0.8
0.6
>> zplane(z,p)
Imaginary Part
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
http://lonely113.blogspot.com
-0.5
0
Real Part
0.5
http://lonely113.blogspot.com
Llamada al FVtool
36
fvtool(num,den)
Donde: num y den corresponden al filtro en estudio.
Continuando con el ejemplo anterior:
>>fvtool(num,den)
http://lonely113.blogspot.com
Configuracin de FVtool
37
http://lonely113.blogspot.com
Respuesta de Magnitud
Respuesta de fase
Respuestas de magnitud y fase
Respuesta al escaln
Grfico de polos y ceros
Etc
http://lonely113.blogspot.com
Ejemplo:
39
Respuesta al impulso
http://lonely113.blogspot.com
http://lonely113.blogspot.com
http://lonely113.blogspot.com
Funcin de transferencia:
Respuesta en frecuencia:
http://lonely113.blogspot.com
http://lonely113.blogspot.com
http://lonely113.blogspot.com
Especificar Fs.
Fnyquist=Fs/2
Ws(1)=fstop1/Fnyquist
Wp(1)=fpass1/Fnyquist
Wp(2)=fpass2/Fnyquist
Ws(2)=fstop2/Fnyquist
[nB,WnB]=buttord(Wp,Ws,Rp,Rs)
Wp, Ws, Rp y Rs corresponden a las especificaciones.
WnB: Frecuencia a -3 dB.
2. Obtener los coeficientes del filtro.
[numB,denB]=butter[nB,WnB]
En el diseo de filtros Pasabanda o rechazo de banda el orden del
filtro resulta ser en realidad el doble del especificado por el
comando buttord.
http://lonely113.blogspot.com
http://lonely113.blogspot.com
>> [nE,WnE]=ellipord(Wp,Ws,Rp,Rs)
nE =
6
WnE =
0.3000 0.5500
>> [numE,denE]=ellip(nE,Rp,Rs,Wp);
Se puede observar que la cantidad de
coeficientes es mucho menor que en el
caso de un filtro Butterworth.
http://lonely113.blogspot.com
http://lonely113.blogspot.com
35
30
25
20
15
10
>> [xt,fs]=wavread('tuner1');
>> yt=filter(numE,denE,xt);
>> soundsc(xt,fs)
>> soundsc(yt,fs)
5
0
0
500
1000
1500
2000
2500
3000
3500
4000
Espectro de yt
10
0
500
http://lonely113.blogspot.com
1000
1500
2000
2500
3000
3500
4000
[num,den]=butter(nB,Wn)
Elptico Pasabajas
[num,den]=ellip(nE,Rp,Rs,Wp)
Butterworth Pasaaltas
[num,den]=butter(nB,Wn,high)
Elptic0 Pasaaltas
[num,den]=ellip(nE,Rp,Rs,Wp,high)
http://lonely113.blogspot.com
Funcin de transferencia:
Respuesta en frecuencia:
http://lonely113.blogspot.com
-40
-30
-20
-10
10
20
30
40
50
num=fir1(n,Wp)
Dnde:
n: Orden del filtro
Wp: Vector que contiene las frecuencias de corte. Si slo tiene
un elemento se obtiene un filtro pasabajas y si contiene dos
elementos se obtiene un filtro pasabanda.
http://lonely113.blogspot.com
Ejemplo:
54
http://lonely113.blogspot.com
Ejemplo:
55
>> Fs=8000;
>> Fnyquist=Fs/2;
>> fpass1=2200;
>> fpass2=3200;
>> Rp=1;
>> Rs=60;
>> Wp(1)=fpass1/Fnyquist;
>> Wp(2)=fpass2/Fnyquist;
>> n=127;
>> num=fir1(n,Wp);
>>fvtool(num)
http://lonely113.blogspot.com
>> wintool
Initializing Window Design & Analysis Tool ..... done.
http://lonely113.blogspot.com
Tipo
Anchura de Lbulo
Principal
Mnima Atenuacin
en la Banda de
Rechazo
Anchura de Banda
de Transicin
Rectangular
2Fs/(2M+1)
20.9
0.46Fs/M
Hann
4Fs/(2M+1)
43.9
1.55Fs/M
Hamming
2Fs/(2M+1)
54.5
1.55Fs/M
Blackman
6Fs/(2M+1)
75.3
2.78Fs/M
http://lonely113.blogspot.com
http://lonely113.blogspot.com
Continuacin
59
>> numBlackman=fir1(n,Wp,window_1);
>>fvtool(numBlackman)
http://lonely113.blogspot.com
de
audio
60
Espectro de xt
35
30
25
20
15
10
>> [xt,Fs]=wavread('tuner1');
>> yt=filter(numBlackman,1,xt);
>> soundsc(xt,Fs)
>> soundsc(yt,Fs)
5
0
0
500
1000
1500
2000
2500
3000
3500
4000
Espectro de yt
0
500
http://lonely113.blogspot.com
1000
1500
2000
2500
3000
3500
4000
>> fdatool
http://lonely113.blogspot.com
http://lonely113.blogspot.com
Espectro de xt
35
30
25
20
15
10
>> [xt,Fs]=wavread('tuner1');
>> yt=filter(numHp,denHp,xt);
>> soundsc(xt)
>> soundsc(yt)
5
0
0
500
1000
1500
2000
2500
3000
3500
4000
Espectro de yt
1.2
0.8
0.6
0.4
0.2
0
500
http://lonely113.blogspot.com
1000
1500
2000
2500
3000
3500
4000
http://lonely113.blogspot.com
65