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 :

??? 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);
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.

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