Parte 1 - examen practico Matlab (codigo) PDF

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 PDF
Total Downloads 39
Total Views 136

Summary

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....


Description

%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)...


Similar Free PDFs