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