rebonjour c'est encore moi,
J'essaye de m'initier à la création et à l'utilisation de function, pour alléger mes codes.
J'ai créer une fonction qui à partir d'une date donnée dans le programme principale calcule la succession de dates toutes les 15 minutes. Le nombres de dates calculées est données par la taille d'une matrice définie dans le programme principale.
Le code de ma fonction fonctionne parfaitement quand il est directement inséré dans le programme principale, mais lorsqu'il est sous forme de fonction j'obtiens le message d'erreur suivant :
Je suis persuadé qu'il ne faut pas grand chose pour régler se problème, j'ai essayé de remplacer les '{' par des '(' mais cela ne fonctionne pas.??? Function 'eq' is not defined for values of class 'cell'.
Error in ==> eq at 18
[varargout{1:nargout}] = builtin('eq', varargin{:});
Error in ==> calculedate at 15
case m=={1,3,5,7,8,10,12}
Error in ==> temp2 at 16
t=calculedate(date, s);
voici mon programme principal:
Code programme principal : 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 clear all close all clc X=[1:1:50]; s=size(X); prompt={'date de début sous le format mm/dd/yyyy HH:MM'}; title='toto à la plage'; num_lines=1; def={'05/23/2000 23:45'}; answer = inputdlg(prompt,title,num_lines,def); date=answer{1}; t=calculdate(date, s);
et ma function 'calculdate'
Code calculdate.m : 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
27
28
29
30
31
32
33
34
35
36
37
38
39
40 function t=calculdate(date, s) [y, m, d, H, M] = datevec(date); t={datestr(sprintf('%d-%d-%d %d:%d',m,d,y,H,M),'dd-mmm-yyyy HH:MM')}; for i=2:(s(2)+1); M=M+15; t{i}=datestr(sprintf('%d-%d-%d %d:%d',m,d,y,H,M),'dd-mmm-yyyy HH:MM'); if (M==60) H=H+1; if (H==24) d=d+1; switch m case m=={1,3,5,7,8,10,12} if (d==31) m=m+1; end case m=={4,6,9,11} if (d==30) m=m+1; end case m==2 if y=={1996,2000,2004,2008,2012,2016} if (d==29) m=m+1; end else if(d==28) m=m+1; end end end if (m==12); y=y+1; end end end end
Partager