close all clear all clc %% %%%%%%%%%%%%%%%%%%%%%% segnali nel tempo load('lab5_1.mat') % h e srx hanno la stessa lunghezza e gli stessi tempi T = 0.1; t = 0:T:300; % = th = tsrx (tempi associati ai segnali) figure subplot(2,1,1) plot(t,h) xlabel('t [min]') ylabel('h(t)') grid on subplot(2,1,2) plot(t,srx) xlabel('t [min]') ylabel('srx(t)') grid on %% %%%%%%%%%%%%%%%%%%%%%% trasformata di Fourier N = length(t); % numero di campioni (nel tempo ed in frequenza) om0 = 2*pi/(T*N); % passo di campionamento in pulsazione om = om0*(-round((N-1)/2):round(N/2)-1); % campioni in pulsazione % 1) calcolare le trasformate di Fourier: usando fft + fftshift H = fftshift(T*fft(h).*exp(-1i*om*t(1))); SRX = fftshift(T*fft(srx).*exp(-1i*om*t(1))); % 2) plottarle con semilogy: usare il valore assoluto abs figure subplot(2,1,1) semilogy(om,abs(H)) xlabel('\omega [rad/min]') ylabel('|H(j\omega)|') grid on subplot(2,1,2) semilogy(om,abs(SRX)) xlabel('\omega [rad/min]') ylabel('|SRX(j\omega)|') grid on %% %%%%%%%%%%%%%%%%%%%%%% convoluzione % 1) calcolare la convoluzione X come prodotto in frequenza X = H.*SRX; % 2) calcolare la antitrasformata di Fourier: useremo ifft e ifftshift x = ifft(ifftshift(X).*exp(1i*om*t(1))/T); % 3) plottare i risultati % confrontando con la convoluzione calcolata tramite la funzione conv figure subplot(2,1,1) semilogy(om,abs(X)) xlabel('\omega [rad/min]') ylabel('|X(j\omega)|') grid on subplot(2,1,2) x_conv = T*conv(h,srx); x_conv = x_conv(1:length(h)); plot(t,x_conv,t,x) xlabel('t [min]') ylabel('h*srx(t)') legend('tramite conv','tramite FFT') grid