clear all close all clc signals = loadAllSignals('Supelec_2012_SIR_Spectral_Analysis_EA_v001.mat'); Fe = 1000000.0; signal = signals(:,1); t = (0: 1: length(signal)-1)/Fe; %filtering smooth nb_coeff = 10; coeff = ones(1, nb_coeff)/nb_coeff; signalm = filter(coeff, 1, signal); %envelope time signalenv = filter(coeff, 1, abs(hilbert(sgolayfilt(signal, 1, 3)))); plot_param = {'Color', [0.6 0.1 0.2],'Linewidth',1}; % savitzky-golay signalsg = sgolayfilt(signal, 1, 3); %fft t0pad=2^12;%0-padding f=((1: t0pad)-1)*Fe/t0pad-Fe/2;%echelle des frequences centrée en 0 TFx0pad=filter(coeff, 1, fft(signal, t0pad));%fft avec 0-padding ModulTFx0pad=abs(TFx0pad);%module CenterModulTFx0pad=fftshift(ModulTFx0pad);%shift zero-frequency component to centrer of spectrum signalF=20*log10(CenterModulTFx0pad);%log %fft smooth TFx0pad=filter(coeff, 1, fft(signalm, t0pad));%fft avec 0-padding ModulTFx0pad=abs(TFx0pad);%module CenterModulTFx0pad=fftshift(ModulTFx0pad);%shift zero-frequency component to centrer of spectrum signalmF=20*log10(CenterModulTFx0pad);%log %fft hilbert TFx0pad=filter(coeff, 1, fft(signalenv, t0pad));%fft avec 0-padding ModulTFx0pad=abs(TFx0pad);%module CenterModulTFx0pad=fftshift(ModulTFx0pad);%shift zero-frequency component to centrer of spectrum signalenvF=20*log10(CenterModulTFx0pad);%log %savitzky-golay TFx0pad=filter(coeff, 1, fft(signalsg, t0pad));%fft avec 0-padding ModulTFx0pad=abs(TFx0pad);%module CenterModulTFx0pad=fftshift(ModulTFx0pad);%shift zero-frequency component to centrer of spectrum signalsgF=20*log10(CenterModulTFx0pad);%log %plot figure subplot(221)%%%%%%%%%%%%%%%%%%%%%%% plot(t, signal) xlabel('Time (s)') ylabel('Amplitude (a.u.)') hold on plot(t, signalm) xlim([0 length(signal)/Fe]) title('smooth filtering') legend('signal', 'avg signal') subplot(223)%%%%%%%%%%%%%%%%%%%%%% plot(t, signal) xlabel('Time (s)') ylabel('Amplitude (a.u.)') hold on plot(t,[-1,1].*signalenv,plot_param{:}) plot(t, signalsg) xlim([0 length(signal)/Fe]) title('Hilbert Envelope') legend('signal', 'Hilbert Envelope', 'savitzky-golay') subplot(222)%%%%%%%%%%%%%%%%%%%%%% plot(f, signalF) xlabel('f(Hz)'); ylabel('Module de la TF en dB'); grid on hold on plot(f, signalmF) legend('signal', 'avg signal') title('FFT') xlim([0 Fe/2]) subplot(224)%%%%%%%%%%%%%%%%%%%%%% plot(f, signalF) xlabel('f(Hz)'); ylabel('Module de la TF en dB'); grid on hold on plot(f, signalenvF) plot(f, signalsgF) legend('signal', 'signal Hilbert', 'savitzky-golay') title('FFT') xlim([0 Fe/2]) figure ax1 = subplot(3,1,1); plot(t,signal) ax2 = subplot(3,1,2); pspectrum(signal,Fe,'spectrogram','OverlapPercent',99, 'Leakage',1,'MinThreshold',-150) colorbar(ax2,'off') ax3 = subplot(3,1,3); pspectrum(signal,Fe,'spectrogram','OverlapPercent',99, 'Leakage',1,'MinThreshold',-150,'TimeResolution', 10e-6) colorbar(ax3,'off') linkaxes([ax1,ax2,ax3],'x') figure [sp,fp,tp] = pspectrum(signal,Fe,'spectrogram','OverlapPercent',99, 'Leakage',1); mesh(tp,fp,sp) view(-15,60) xlabel('Time (s)') ylabel('Frequency (Hz)')