Bonjour,

Je créé une boite de dialogue avec 3 inputs: 2 dates et un pas de temps.
Il est important que le pas de temps soit < à la différence entre deux dates
Donc j'aimerais réouvrir cette boite de dialogue (sans relancer tout le programme) jusqu'à ce que ces 3 valeurs soient cohérentes

Pour l'insant l'idée c'est d'en ouvrir une boite de dialogue et d'en ré ouvrir une seconde (la même) mais dans une boucle while .. c'est un peu lourd.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
%% OUVERTURE 1ere boite de dialogue
definput = {datestr(min(MinStime0),'yyyy mm dd HH MM SS'),datestr(max(MaxStime0),'yyyy mm dd HH MM SS'),'900'};
prompt = {'Start Time UTC (yyyy mm dd hh mm ss):','End Time UTC (yyyy mm dd hh mm ss):','Spectral analysis time windowing (in sec):'};
answer = inputdlg(prompt,['Cutting signals ' solNumb], [1 50; 1 50; 1 40],definput)
CSN = str2num(answer{1});
CEN = str2num(answer{2});
wind_sec = str2num(answer{3});
cut0_start = datenum(CSN(1),CSN(2),CSN(3),CSN(4),CSN(5),CSN(6));
cut0_end   = datenum(CEN(1),CEN(2),CEN(3),CEN(4),CEN(5),CEN(6));
 
%% REOUVERTURE SI CONDITION PAS VRAI
 
while wind_sec > (60*60*24)*(cut0_end-cut0_start)
    warning(' !! Time step is wider than whole signal duration > REDUCE Time Step !!')
    ferror = errordlg('Time step is wider than whole signal duration','ERROR');
 
definput = {datestr(min(MinStime0),'yyyy mm dd HH MM SS'),datestr(max(MaxStime0),'yyyy mm dd HH MM SS'),'900'};
prompt = {'Start Time UTC (yyyy mm dd hh mm ss):','End Time UTC (yyyy mm dd hh mm ss):','Spectral analysis time windowing (in sec):'};
answer = inputdlg(prompt,['Cutting signals ' solNumb], [1 50; 1 50; 1 40],definput)
CSN = str2num(answer{1});
CEN = str2num(answer{2});
wind_sec = str2num(answer{3});
cut0_start = datenum(CSN(1),CSN(2),CSN(3),CSN(4),CSN(5),CSN(6));
cut0_end   = datenum(CEN(1),CEN(2),CEN(3),CEN(4),CEN(5),CEN(6));
end
Merci d'avance pour tout conseil.