1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| function popupmenu2_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%recup de la structure handles à jour
handles = guidata(gcbf);
%Simplification d'écriture
temps = handles.temps;
x = handles.x;
Te = handles.Te;
%Effacement des courbes 3 et 4
cla (handles.axes3);
cla (handles.axes4);
%Récupération de la valeur de N du pop-menu
str=get(hObject,'String');
N = str2double(str{get(hObject,'Value')});
handles.N = N;
tic
%définition de la base de fréquence
fe=1/Te; % fréquence d'échantillonnage
f=fe*(-N/2:N/2-1)/N;
%libération de l'espace mémoire
clear s S;
%Test si on peut faire au moins 2 échantillons de longueur N sur le signal
if (length(temps) < (2*N))
cla (handles.axes2);
cla (handles.axes3);
cla (handles.axes4);
title(handles.axes2,'Représentation du signal temps/fréquence','Color','b');
title(handles.axes3,'Spectre','Color','b');
errordlg('Désolé, mais le nombre de points choisis pour la fft est trop grand par rapport au nombre d''échantillons du signal, veuillez choisir une valeur de N plus faible','N est trop grand!');
end
%Récupération de la valeur de swin
str=get(handles.popupmenu3,'String');
win = str{get(handles.popupmenu3,'Value')}
%Création de la fenêtre
if length(win) == 7 & win == 'Hamming'
swin = hamming(N);
elseif length(win) == 7 & win == 'Hanning'
swin = hann(N);
elseif length(win) == 13 & win == 'Rectangulaire'
swin = (ones(1,N));
elseif length(win) == 8 & win == 'Blackman'
swin = blackman (N);
elseif length(win) == 1 & win == ' '
swin = 1;
elseif length(win) == 8 & win == 'Bartlett'
swin = bartlett(N);
else swin = 1;
end
Calcul et Affichage |
Partager