commit
d6ac543b31
1 changed files with 105 additions and 0 deletions
@ -0,0 +1,105 @@ |
|||||
|
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)') |
||||
Loading…
Reference in new issue