Uploaded by Xavier Arequipa

Laboratorio2.2

advertisement
DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ASIGNATURA: Procesamiento Digital de Señales
NRC: 4818
LABORATORIO 2.2
DOCENTE: Ing. Rodolfo Gordillo
INTEGRANTES:
 Arequipa Xavier
 Castillo Edwin
 Ortega Óscar
SEMII NOV20-MAR21
LABORATORIO 2.2
1. Para la señal con distorsión armónica "u" (darARm.mat) , diseñe un filtro FIR
pasabanda y un filtro FIR pasaltos para la extracción del 3er y 5to armónico
respectivamente. Las frecuencias de corte de 280 y 320Hz para el pasabanda y 480
Hz para el pasalto. La metodología de diseño es a través de la relación frecuenciatiempo utilizando la IFFT y FFT. Represente todas las señales en el proceso de
diseño (Definición en frecuencia, señal inversa, shifting, truncamiento, respuesta de
frecuencia del filtro truncado y señal filtrada de salida).
Filtro Pasa Altos
%% Filtro de la señal armónica con filtro FIR PASA
ALTO
% Guarde datos como darARm señal u , u0 y td
figure
load darARm
N = 512; %Tamaño de muestras
fs = 4000; %Frecuecnia de muestreo
fc = 480; %Frecuencia de Corte 480 Hz
w=-pi:(2*pi/(N-1)):pi; %Eje Normalizado
B = round (N*fc/fs); % Ancho de banda del filtro
H = [zeros(B,1);ones(256-B,1);ones(256B,1);zeros(B,1)]; %Filtro Pasa Alto - Frecuencia
h1 = ifft(H,512); % Inversa de H (timepo)
h = ifftshift(h1);
h = real(h); %Filtro Pasa Alto en Tiempo
subplot(311)
stem(H)
title('Definicion en Frecuencia Del Filtro Pasa
Alto')
axis([0 N 0 1])
subplot(312)
stem(real(h1))
title('Inversa Del Filtro Pasa Alto')
subplot(313)
stem(real(h))
axis([0 N -0.02 0.08])
title('Shifting del Filtro Pasa Alto')
nb =20; %Puntos para truncar
hf = h((256-nb):(256+nb)); %Truncamineto de la
señal
H1= abs(fft(hf,512)); %Se regresa a frecuecnia
Hf= H1/max(H1); %Normaliza
figure
subplot(211)
stem(hf)
title('Truncamiento del Filtro pasa Alto')
subplot(212)
plot(w,fftshift(Hf))
title('Respuesta del Filtro en Frecuencia del Filtro
Truncado')
axis([-pi pi -0.1 1.1])
figure
ur = filter(hf,1,u);
L = 1:500;
plot(td(L),u(L));
hold on
plot(td(L),ur(L))
hold off
legend('Señal Original','Señal Filtrada')
Gráficos Obtenidos
Filtro Pasa Banda
%% Filtro de la señal armónica con filtro FIR PASA BANDA
%%Para frecuencia Inferior Filtro pasa Alto - Frecuencia
Superior Pasa Bajo
figure
load darARm
N = 512; %Tamaño de muestras
fs = 4000; %Frecuecnia de muestreo
fsup = 320; %Frecuencia de Corte Superior 320 Hz
fi = 280;
%Frecuencia de Corte Inferior 280 Hz
w=-pi:(2*pi/(N-1)):pi; %Eje Normalizado
Bsu = round (N*fsup/fs); % Ancho de banda del filtro
Bin = round (N*fi/fs); % Ancho de banda del filtro
Hi = [zeros(Bin,1);ones(256-Bin,1);ones(256Bin,1);zeros(Bin,1)]; %Filtro Pasa Alto - Frecuencia
Hs = [ones(Bsu,1);zeros(256-Bsu,1);zeros(256Bsu,1);ones(Bsu,1)]; %Filtro Pasa Bajo
H = Hs.*Hi;
h1 = ifft(H,512); % Inversa de H (timepo)
h = ifftshift(h1);
h = real(h); %Filtro Pasa Alto en Tiempo
subplot(311)
stem(H)
title('Definicion en Frecuencia Del Filtro Pasa Banda')
axis([0 N 0 1])
subplot(312)
stem(real(h1))
title('Inversa Del Filtro Pasa Banda')
subplot(313)
stem(real(h))
axis([0 N -0.08 0.08])
title('Shifting del Filtro Pasa Banda')
nb =20; %Puntos para truncar
hf = h((256-nb):(256+nb)); %Truncamineto de la señal
H1= abs(fft(hf,512)); %Se regresa a frecuecnia
Hf= H1/max(H1); %Normaliza
figure
subplot(211)
stem(hf)
title('Truncamiento del Filtro pasa Banda')
subplot(212)
plot(w,fftshift(Hf))
title('Respuesta del Filtro en Frecuencia del Filtro
Truncado')
axis([-pi pi -0.1 1.1])
figure
ur = filter(hf,1,u);
L = 1:500;
plot(td(L),u(L));
hold on
plot(td(L),ur(L))
hold off
legend('Señal Original','Señal Filtrada')
Gráficos Obtenidos
2. Utilizando el archivo "exdf.m" (diseño de un filtro IIR, Butterworth en forma
directa), programe dos realizaciones de la siguiente forma.
2.1. En serie, dos filtros de orden 2 y un filtro de orden 1. FDI para el primer
filtro, FDII para el segundo y tercer filtros

Primer Filtro Orden II en FD1
0.008372𝑍 −2 + 0.01674𝑍 −1 + 0.008372
𝐻1 =
0.8905𝑍 −2 − 1.857𝑍 −1 + 1
𝑌1 (𝑍) 0.008372𝑍 −2 + 0.01674𝑍 −1 + 0.008372
=
𝑋1 (𝑍)
0.8905𝑍 −2 − 1.857𝑍 −1 + 1
0.8905𝑦(𝑛 − 2) − 1.857𝑦(𝑛 − 1) + 𝑦(𝑛) = 0.008372𝑥(𝑛 − 2) + 0.01674𝑥(𝑛 − 1) + 0.008372𝑥(𝑛)
𝒚𝟏 (𝒏) = 𝟏. 𝟖𝟓𝟕𝒚𝟏 (𝒏 − 𝟏) − 𝟎. 𝟖𝟗𝟎𝟓𝒚𝟏 (𝒏 − 𝟐) + 𝟎. 𝟎𝟎𝟖𝟑𝟕𝟐𝒙𝟏 (𝒏 − 𝟐)
+ 𝟎. 𝟎𝟏𝟔𝟕𝟒𝒙𝟏 (𝒏 − 𝟏) + 𝟎. 𝟎𝟎𝟖𝟑𝟕𝟐𝒙𝟏 (𝒏)

Segundo Filtro Orden II en FDII
0.007691𝑍 −2 + 0.01538𝑧 −1 + 0.007691
𝐻2 =
0.7367𝑍 −2 − 1.706𝑧 −1 + 1
𝑊2 (𝑍)
1
=
𝑋2 (𝑍) 0.7367𝑍 −2 − 1.706𝑍 −1 + 1
0.7367𝑤2 (𝑛 − 2) − 1.706𝑤2 (𝑛 − 1) + 𝑤2 (𝑛) = 𝑥2 (𝑛)
𝒘𝟐 (𝒏) = 𝒙𝟐 (𝒏) + 𝟏. 𝟕𝟎𝟔𝒘𝟐 (𝒏 − 𝟏) − 𝟎. 𝟕𝟑𝟔𝟕𝒘𝟐 (𝒏 − 𝟐)
𝑌2 (𝑍)
= 0.007691𝑍 −2 + 0.01538𝑧 −1 + 0.007691
𝑊2 (𝑍)
𝐲𝟐 (𝐧) = 𝟎. 𝟎𝟎𝟕𝟔𝟗𝟏𝒘𝟐 (𝒏 − 𝟐) + 𝟎. 𝟎𝟏𝟓𝟑𝟖𝒘𝟐 (𝒏 − 𝟏) + 𝟎. 𝟎𝟎𝟕𝟔𝟗𝟏𝒘𝟐 (𝒏)

Tercer Filtro Orden I en FD2
0.08636𝑍 −1 + 0.08636
𝐻3 =
−0.8273𝑍 −1 + 1
𝑊3 (𝑍)
1
=
𝑋3 (𝑍) −0.8273𝑍 −1 + 1
𝒘𝟑 (𝒏) = 𝒙𝟑 (𝒏) + 𝟎. 𝟖𝟐𝟕𝟑𝒘𝟑 (𝒏 − 𝟏)
𝑌3 (𝑍)
= 0.08636𝑍 −1 + 0.08636
𝑊3 (𝑍)
𝒚𝟑 (𝒏) = 𝟎. 𝟎𝟖𝟔𝟑𝟔𝒘𝟑 (𝒏 − 𝟏) + 𝟎. 𝟎𝟖𝟔𝟑𝟔𝒘𝟑 (𝒏)
CÓDIGO
load darARm
Fs = 4000; % Sampling Frequency
N = 5;
% Order
Fc = 120; % Cutoff Frequency
% Construct an FDESIGN object and call its BUTTER method.
h = fdesign.lowpass('N,F3dB', N, Fc, Fs);
Hd = design(h, 'butter');
%% Generación de Los Filtros
h1z=tf(Hd.sosMatrix(1,1:3),Hd.sosMatrix(1,4:6),1/Fs);
h1z=h1z*Hd.ScaleValues(1);
h2z=tf(Hd.sosMatrix(2,1:3),Hd.sosMatrix(2,4:6),1/Fs);
h2z=h2z*Hd.ScaleValues(2)
h3z=tf(Hd.sosMatrix(3,1:3),Hd.sosMatrix(3,4:6),1/Fs);
h3z=h3z*Hd.ScaleValues(3);
Hf=h1z*h2z*h3z
%% Primer Filtro Orden Dos FDI
x=u;x1=0;x2=0; %inicio memoria
y1=0;y2=0;
yF1=[];
for k=1:length(u);
yF1(k) = 1.857*y10.8905*y2+0.008372*x2+0.01674*x1+0.008372*x(k); %Ecuacion
a diferencias del filtro
y2=y1;
y1=yF1(k);
x2=x1;
x1=x(k);
end
figure
L=1:500;
plot(td(L),yF1(L))
title('PRIMER FILTRO')
hold on
plot(td(L),u(L))
hold off
legend('Señal Filtro I','Señal con distorsión armónica')
%% Segundo Filtro Orden Dos FDII
w1=0;w2=0;x2=yF1;
for k=1:length(x2)
w=x2(k)+1.706*w1-0.7367*w2;
yF2(k)=0.007691*w2+0.01538*w1+0.007691*w;
w2=w1;
w1=w;
end
figure;
plot(td(L),yF2(L))
title('Segundo Filtro')
hold on
plot(td(L),u(L))
legend('Señal Filtro II','Señal con distorsión armónica')
%% Tercer Filtro Orden Dos FDII
w1=0;x3=yF2;
for k=1:length(x3)
w=x3(k)+0.8273*w1;
yF3(k)=0.08636*w1+0.08636*w;
w1=w;
end
figure;
plot(td(L),yF3(L))
title('Tercer Filtro')
hold on
plot(td(L),u(L))
legend('Señal Filtrada Completa','Señal con distorsión
armónica')
Gráficos Obtenidos
2.2. El filtro de orden 5 en la forma directa II (Multiplique las tres funciones de
transferencia para obtener la total)
}
𝑯(𝒁) = 𝒉𝟏(𝒁) ∗ 𝒉𝟐(𝒁) ∗ 𝒉𝟑(𝒁)
𝑯(𝒁) =
5.56𝑒 −06 𝑍 −5 + 2.78𝑒 −05 𝑍 −4 + 5.56𝑒 −5 𝑍 −3 + 5.56𝑒 −5 𝑍 −2 + 2.78𝑒 −5 𝑍 −1 + 5.56𝑒 −6
−0.5428𝑍 −5 + 3.045𝑍 −4 − 6.854𝑍 −3 + 7.743𝑍 −2 − 4.39𝑍 −1 + 1
𝑊(𝑍)
1
=
−5
−4
𝑋(𝑍) −0.5428𝑍 + 3.045𝑍 − 6.854𝑍 −3 + 7.743𝑍 −2 − 4.39𝑍 −1 + 1
−0.5428𝑤(𝑛 − 5) + 3.045𝑤(𝑛 − 4) − 6.854𝑤(𝑛 − 3) + 7.743𝑤(𝑛 − 2) − 4.39𝑤(𝑛 − 1) + 𝑤(𝑛) = 𝑥(𝑛)
𝒘(𝒏) = 𝟎. 𝟓𝟒𝟐𝟖𝒘(𝒏 − 𝟓) − 𝟑. 𝟎𝟒𝟓𝒘(𝒏 − 𝟒) + 𝟔. 𝟖𝟓𝟒𝒘(𝒏 − 𝟑) − 𝟕. 𝟕𝟒𝟑𝒘(𝒏 − 𝟐) + 𝟒. 𝟑𝟗𝒘(𝒏 − 𝟏)
+ 𝒙(𝒏)
𝑌(𝑍)
= 5.56𝑒−06 𝑍−5 + 2.78𝑒−05 𝑍−4 + 5.56𝑒−5 𝑍−3 + 5.56𝑒−5 𝑍−2 + 2.78𝑒−5 𝑍−1 + 5.56𝑒−6
𝑊(𝑍)
𝒚(𝒏) = 𝟓. 𝟓𝟔𝒆−𝟎𝟔 𝒘(𝒏 − 𝟓) + 𝟐. 𝟕𝟖𝒆−𝟎𝟓 𝒘(𝒏 − 𝟒) + 𝟓. 𝟓𝟔𝒆−𝟓 𝒘(𝒏 − 𝟑) + 𝟓. 𝟓𝟔𝒆−𝟓 𝒘(𝒏 − 𝟐)
+ 𝟐. 𝟕𝟖𝒆−𝟓 𝒘(𝒏 − 𝟏) + 𝟓. 𝟓𝟔𝒆−𝟔 𝒘(𝒏)
CÓDIGO
clear, close all
Fs = 4000; % Sampling Frequency
N = 5;
% Order
Fc = 120; % Cutoff Frequency
% Construct an FDESIGN object and call its BUTTER method.
h = fdesign.lowpass('N,F3dB', N, Fc, Fs);
Hd = design(h, 'butter');
% [EOF]
load darARm
h1z=tf(Hd.sosMatrix(1,1:3),Hd.sosMatrix(1,4:6),1/Fs);
h1z=h1z*Hd.ScaleValues(1);
h2z=tf(Hd.sosMatrix(2,1:3),Hd.sosMatrix(2,4:6),1/Fs);
h2z=h2z*Hd.ScaleValues(2)
h3z=tf(Hd.sosMatrix(3,1:3),Hd.sosMatrix(3,4:6),1/Fs);
h3z=h3z*Hd.ScaleValues(3);
Hf=h1z*h2z*h3z
[nd,dd]=tfdata(Hf,'v');
%% Forma directa 2 de H
w5=0;w4=0;w3=0;w2=0;w1=0;
y=zeros(1,length(u));
for k=1:length(u)
w=-dd(2)*w1-dd(3)*w2+-dd(4)*w3-dd(5)*w4+dd(6)*w5+u(k);
y(k)=nd(1)*w+nd(2)*w1+nd(3)*w2+nd(4)*w3+nd(5)*w4+nd(6)*w5
;
w5=w4;w4=w3;w3=w2;w2=w1;w1=w;
end
figure
L=1:500;
plot(td(L),u0(L));
title('Filtro Pasa-Bajos FDII')
hold on
plot(td(L),y(L))
hold off
legend('Señal fundamental','Señal recuperada por IIR')
grid on
Gráfico Obtenido
Download