You are on page 1of 23

Definiciones

x = load("Prueba.mat");
fs = 480000;
Ts = 1 / fs;

f = linspace(-fs/2,fs/2,length(x.Codificada));

t_total = length(x.Codificada) / fs - Ts;


t = linspace(0,t_total,length(x.Codificada));

s1 = cos(120000*2*pi*t);
s2 = cos(96000*2*pi*t);

H1 - Pasabandas
%Filtro analógico
Wpa = [96 120]*1000*2*pi;
Wsa = [48 240]*1000*2*pi;
Rp = 3;
Rs = 30;

[n,Wn] = buttord(Wpa,Wsa,Rp,Rs,'s');
[b1,a1] = butter(n,Wn,'s');
sys1 = tf(b1,a1);
bode(sys1)

1
%Filtro digital
Wpd = [96000 120000] * pi / (fs/2);
Wsd = [48000 240000] * pi / (fs/2);

H1 - Pasabandas IIR Invariancia Impulso


Tsii1 = Wpd / Wpa; %Período muestreo invariancia impulso
fsii1 = 1 / Tsii1;
[bz1,az1] = impinvar(b1,a1,fsii1);
sys2 = tf(bz1,az1,Tsii1);
bode(sys2)

H1 - Pasabandas IIR Transformación Bilineal


Tstb1 = 2 * tan(Wpd/2) / Wpa; %Período muestreo transformación bilineal
fstb1 = 1 / Tstb1;
[bz2,az2] = bilinear(b1,a1,fstb1);
sys3 = tf(bz2,az2,Tstb1);
bode(sys3)

2
H1 - Pasabandas FIR
Wpd = [96000 120000] / (fs);
Wsd = [48000 240000] / (fs);
Rp = 6;
Rs = 30;

[~,Wc1] = buttord(Wpd,Wsd,Rp,Rs);
Nh1 = (30 - 3) * fs / (120000 * 22);
Nh = 6;
B1 = fir1(Nh,Wc1);
sys4 = tf(B1,1,Ts);
bode(sys4)

3
H2 - Pasabajos
%Filtro analógico
W1a = 48000*2*pi;
W2a = W1a*2;
Rp = 3;
As = 15;

[N,Wc] = buttord(W1a,W2a,Rp,As,'s');
[b2,a2] = butter(N,Wc,'s');
sys5 = tf(b2,a2);
bode(sys5)

4
%Filtro digital
W1d = 48000 * pi / (fs/2);
W2d = 96000 * pi / (fs/2);

H2 - Pasabajos IIR Invariancia Impulso


Tsii2 = W1d / W1a;
fsii2 = 1 / Tsii2;
[bz3,az3] = impinvar(b2,a2,fsii2);
sys6 = tf(bz3,az3,Tsii2);
bode(sys6)

5
H2 - Pasabajos IIR Transformación Bilineal
Tstb2 = 2 * tan(W1d/2) / W1a;
fstb2 = 1 / Tstb2;
[bz4,az4] = bilinear(b2,a2,fstb2);
sys7 = tf(bz4,az4,Tstb2);
bode(sys7)

6
H2 - Pasabajos FIR
Wpd2 = 48000 / (fs);
Wsd2 = 96000 / (fs);
Rp = 6;
Rs = 15;

[~,Wc2] = buttord(Wpd2,Wsd2,Rp,Rs);
Nh5 = (15 - 3) * fs / (48000 * 22);
Nh = 7;
B2 = fir1(Nh,Wc2);
sys8 = tf(B2,1,Ts);
bode(sys8)

7
Espectros Y Filtrado
%Señal x

Xo = fftshift(fft(x.Original));
Xo_mag = abs(Xo);
Xo_mag = Xo_mag ./ max(Xo_mag);
plot(f,Xo_mag)

8
Xc = fftshift(fft(x.Codificada));
Xc_mag = abs(Xc);
Xc_mag = Xc_mag ./ max(Xc_mag);
plot(f,Xc_mag)

9
%Señal v

v = x.Codificada.' .* s1;
v = v * 2;
R2 = fftshift(fft(v));
R2_mag = abs(R2);
R2_mag = R2_mag ./ max(R2_mag);
plot(f,R2_mag)

10
%Señal w

%H1 analógico
w1 = lsim(sys1,v,t);

Warning: The input signal is undersampled. Use a sampling period smaller than 1.9e-06.

W1 = fftshift(fft(w1));
W1_mag = abs(W1);
W1_mag = W1_mag ./ max(W1_mag);
plot(f,W1_mag)

11
%H1 IIR invariancia impulso
w2 = filter(bz1,az1,v);
W2 = fftshift(fft(w2));
W2_mag = abs(W2);
W2_mag = W2_mag ./ max(W2_mag);
plot(f,W2_mag)

12
%H1 IIR transformación bilineal
w3 = filter(bz2,az2,v);
W3 = fftshift(fft(w3));
W3_mag = abs(W3);
W3_mag = W3_mag ./ max(W3_mag);
plot(f,W3_mag)

13
%H1 FIR
w4 = filter(B1,1,v);
W4 = fftshift(fft(w4));
W4_mag = abs(W4);
W4_mag = W4_mag ./ max(W4_mag);
plot(f,W4_mag)

14
%Señal r

r1 = w1.' .* s2;
r1 = r1 * 2;
R1 = fftshift(fft(r1));
R1_mag = abs(R1);
R1_mag = R1_mag ./ max(R1_mag);
plot(f,R1_mag)

15
r2 = w2 .* s2;
r2 = r2 * 2;
R2 = fftshift(fft(r2));
R2_mag = abs(R2);
R2_mag = R2_mag ./ max(R2_mag);
plot(f,R2_mag)

16
r3 = w3 .* s2;
r3 = r3 * 2;
R3 = fftshift(fft(r3));
R3_mag = abs(R3);
R3_mag = R3_mag ./ max(R3_mag);
plot(f,R3_mag)

17
r4 = w4 .* s2;
r4 = r4 * 2;
R4 = fftshift(fft(r4));
R4_mag = abs(R4);
R4_mag = R4_mag ./ max(R4_mag);
plot(f,R4_mag)

18
%Señal y

%H2 analógico
y1 = lsim(sys5,r1,t);
Y1 = fftshift(fft(y1));
Y1_mag = abs(Y1);
Y1_mag = Y1_mag ./ max(Y1_mag);
plot(f,Y1_mag)

19
%H2 IIR invariancia impulso
y2 = filter(bz3,az3,r2);
Y2 = fftshift(fft(y2));
Y2_mag = abs(Y2);
Y2_mag = Y2_mag ./ max(Y2_mag);
plot(f,Y2_mag)

20
%H2 IIR transformación bilineal
y3 = filter(bz4,az4,r3);
Y3 = fftshift(fft(y3));
Y3_mag = abs(Y3);
Y3_mag = Y3_mag ./ max(Y3_mag);
plot(f,Y3_mag)

21
%H2 FIR
y4 = filter(B2,1,r4);
Y4 = fftshift(fft(y4));
Y4_mag = abs(Y4);
Y4_mag = Y4_mag ./ max(Y4_mag);
plot(f,Y4_mag)

22
Prueba
%Filtros analógicos
% Yd1 = decimate(y1,10);
% sound(Yd1, fs/10);

%Filtros IIR Invariancia Impulso


%Yd2 = decimate(y2,10);
%sound(Yd2, fs/10);

%Filtros IIR Transformación Bilineal


%Yd3 = decimate(y3,10);
%sound(Yd3, fs/10);

%Filtros FIR
%Yd4 = decimate(y4,10);
%sound(Yd4, fs/10);

23

You might also like