Title | Parte 1 - examen practico Matlab (codigo) |
---|---|
Course | Xestión de Infraestruturas |
Institution | Universidade da Coruña |
Pages | 10 |
File Size | 52.4 KB |
File Type | |
Total Downloads | 39 |
Total Views | 136 |
Codigo fuente de la primera parte utilizada para el examen practico de la asignatura. Valido para Octave y Matlab. Variables descriptivas, proceso explicado por pasos y graficas etiquetadas....
%Parte 1
close all; clear all;
%Paso 1: generacion señal
%Parametros + generacion señales y ruido fs = 48000 %Frecuencia muestreo en Hz Ts = 1/fs; %Periodo de muestreo T = 1; %Duracion de señal en segundos f1 = 220; %Frecuencia de señal senoidal 1 f2 = 2 * f1; %Frecuencia de señal senoidal 2 f3 = 3 * f1; %Frecuencia de señal senoidal 3 f4 = 4 * f1; %Frecuencia de señal senoidal 4 A1 = 0.1; %Amplitud de señal A2 = 0.1; %Amplitud de señal A3 = 1; %Amplitud de señal A4 = 1; %Amplitud de señal
t = Ts:Ts:T; %Vector eje tiempo L = length(t) %Longitud de t. Debe ser igual a fs*T xdet1 = A1 * cos(2 * pi * f1 * t); %x1(t) xdet2 = A2 * cos(2 * pi * f2 * t); %x2(t) xdet3 = A3 * cos(2 * pi * f3 * t); %x3(t) xdet4 = A4 * cos(2 * pi * f4 * t); %x4(t)
%Suma de señales xdet = xdet1 + xdet2 + xdet3 + xdet4;
R = randn(1, L); %Generacion ruido blanco gaussiano xdetr = xdet + R; %Señal + ruido
%Figura 1: señales sin ruido figure; subplot(511) plot(t, xdet1) axis([0 0.05 -2 2]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud') title('señal x1') subplot(512) plot(t, xdet2) axis([0 0.05 -2 2]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud') title('señal x2') subplot(513) plot(t, xdet3) axis([0 0.05 -2 2]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud') title('señal x3') subplot(514) plot(t, xdet4) axis([0 0.1 -0.5 0.5]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud') title('señal x3') subplot(515)
plot(t, xdet) axis([0 0.05 -6 6]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud') title('señal x(t)')
%Figura 2: señales con ruido figure; subplot(511) plot(t, xdet1) axis([0 0.05 -2 2]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud') title('señal x1') subplot(512) plot(t, xdet2) axis([0 0.05 -2 2]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud') title('señal x2') subplot(513) plot(t, xdet3) axis([0 0.05 -2 2]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud') title('señal x3') subplot(514) plot(t, xdet4) axis([0 0.05 -2 2]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud')
title('señal x3') subplot(515) plot(t, xdetr) axis([0 0.1 -2 2]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud') title('señal x(t)')
%Paso 2: transf. de Fourier
xdef1 = fftshift(fft(xdet1)); %Transformada Fourier x1 xdef2 = fftshift(fft(xdet2)); %Transformada Fourier x2 xdef3 = fftshift(fft(xdet3)); %Transformada Fourier x3 xdef4 = fftshift(fft(xdet4)); %Transformada Fourier x4
xdef = fftshift(fft(xdet)); %Transformada Fourier xt xdefr = fftshift(fft(xdetr)); %Transformada Fourier xt + ruido
f = -fs / 2 + fs / L:fs / L:fs / 2; %Declaracion eje de frecuencias
%Figura 3: transformadas de Fourier sin ruido figure; subplot(511) plot (f, abs(xdef1) / max(abs(xdef1))) axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('xdef1') subplot(512) plot (f, abs(xdef2) / max(abs(xdef2))) axis([-1000 1000 0 1.1])
xlabel('f(Hz)') ylabel('amplitud') title('xdef2') subplot(513) plot (f, abs(xdef3) / max(abs(xdef3))) axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('xdef3') subplot(514) plot (f, abs(xdef4) / max(abs(xdef4))); axis([-1000 1000 0 1.1]); xlabel('f(Hz)') ylabel('amplitud') title('xdef4') subplot(515) plot (f, abs(xdef) / max(abs(xdef))) axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('xdef')
%Figura 4: transformadas de Fourier con ruido figure; subplot(511) plot (f, abs(xdef1) / max(abs(xdef1))) axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('xdef1') subplot(512)
plot (f, abs(xdef2) / max(abs(xdef2))) axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('xdef2') subplot(513) plot (f, abs(xdef3) / max(abs(xdef3))) axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('xdef3') subplot(514) plot (f, abs(xdef4) / max(abs(xdef4))); axis([-1000 1000 0 1.1]); xlabel('f(Hz)') ylabel('amplitud') title('xdef4') subplot(515) plot (f, abs(xdefr) / max(abs(xdefr))) axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('xdefr')
%Paso 3: respuesta de filtros %Filtro paso bajo flow = 500; %Frecuencia de corte (Hz) Hdefl = zeros(1, L/2); Hdefl(1:flow/fs*L) = ones(1,flow/fs*L); Hdefl = [fliplr(Hdefl) Hdefl];
%Filtro paso alto fhigh = 680; %Frecuencia de corte (Hz) Hdefh = ones(1, L/2); Hdefh(1:fhigh/fs*L) = zeros(1,fhigh/fs*L); Hdefh = [fliplr(Hdefh) Hdefh];
Hdefelim = Hdefl + Hdefh;
%Figura 5: frecuencia filtro + TF señal suma figure; plot (f, abs(xdef) / max(abs(xdef))); %Transformada Fourier señal suma hold on; plot(f, abs(Hdefelim), 'g'); %CAMBIAR en funcion del filtro que se pida axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('frecuencia filtro')
%Figura 6: salida en frecuencia figure; ydef = xdefr .* Hdefh; %CAMBIAR en fundion del filtro que se pida plot(f, abs(ydef)/max(abs(ydef))); axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('salida en frecuencia')
%Figura 7: salida en tiempo
ydet = ifft(fftshift(ydef)); %Transformada Fourier inversa ydet = real(ydet);
figure; plot(t, ydet); axis([0 0.1 -0.5 0.5]); title('salida en tiempo')
%Figura 8: TF señal suma + TF suma y frecuencia + salida en frecuencia + salida en tiempo figure; subplot(411) plot(t, xdet) axis([0 0.05 -0.5 0.5]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud') title('señal x(t)') subplot(412) plot (f, abs(xdef) / max(abs(xdef))); %Transformada Fourier señal suma hold on; plot(f, abs(Hdefelim), 'g'); %CAMBIAR en funcion del filtro que se pida axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('frecuencia filtro') hold off; subplot(413) ydef = xdef .* Hdefelim; %CAMBIAR en fundion del filtro que se pida plot(f, abs(ydef)/max(abs(ydef))); axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('salida en frecuencia') subplot(414) ydet = ifft(fftshift(ydef)); %Transformada Fourier inversa
ydet = real(ydet); plot(t, ydet); axis([0 0.1 -0.5 0.5]); xlabel('t(s)') ylabel('amplitud') title('salida en tiempo')
%Figura 9 figure; subplot(411) plot(t, xdetr) axis([0 0.1 -4 4]) %Ajusta ejes para visualizar bien la señal xlabel('tiempo (s)') ylabel('amplitud') title('señal x(t)') subplot(412) plot (f, abs(xdefr) / max(abs(xdefr))); %Transformada Fourier señal suma hold on; plot(f, abs(Hdefh), 'g'); %CAMBIAR en funcion del filtro que se pida axis([-1000 1000 0 1.1]) xlabel('f(Hz)') ylabel('amplitud') title('frecuencia filtro') hold off; subplot(413) ydef = xdefr .* Hdefh; %CAMBIAR en fundion del filtro que se pida plot(f, abs(ydef)/max(abs(ydef))); axis([-1000 1000 0 1.1]) xlabel('f(Hz)')
ylabel('amplitud') title('salida en frecuencia') subplot(414) ydet = ifft(fftshift(ydef)); %Transformada Fourier inversa ydet = real(ydet); plot(t, ydet); axis([0 0.1 -2 2]); title('salida en tiempo')
%Expresiones salida %Filtro paso bajo: y(t) = A * cos(2 * pi * f menor * t) + A * cos (2 * pi * segunda f mayor * t) %Filtro paso alto: y(t) = A * cos (2 * pi * segunda f mayor * t) + A * cos (2 * pi * f mayor * t) %Filtro banda eliminada: y(t) = A * cos (2 * pi * f menor * t) + A * cos (2 * pi * f mayor * t)...