Bonjour,

J'ai un problème en utilisant un de mes codes que je croyais bon jusque-là mais qui s'avère en fait problématique ! Le voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
function R=deb_fin(valeurs_Imp1_liquide)
LL=diff(valeurs_Imp1_liquide);
L3=find(LL>1);
fin=valeurs_Imp1_liquide(L3); 
fin(numel(L3)+1)=valeurs_Imp1_liquide(end);
debut(2:numel(L3)+1)=valeurs_Imp1_liquide(L3+1);
debut(1)=valeurs_Imp1_liquide(1);
debut;
fin;
R=[debut', fin', (fin'-debut')+1];
A=0;
Je vous explique le fonctionnement de ce code : il prend en paramètre un vecteur colonne, que j'appelle valeurs_Im1_liquide, par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 valeurs_Imp1_liquide=[998 ; 1000 ; 1001];
Il renvoie dans R les segments de longueur 1 et leur durée, soit donc ici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
R=
 
998 998 1
1000 1001 2
car 998 est un "segment" de longueur 1 : [998 998] et [1000 1001] est un segment de longueur 2. Mais cela ne marche pas toujours, par exemple avec :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
valeurs_Imp1_liquide=[998 ; 1000 ; 1002];
Je devrais avoir :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
R=
 
998 998 1
1000 1000 1
1002 1002 1
Mais à la place j'ai un message d'erreur :

??? Error using ==> minus
Matrix dimensions must agree.
Error in ==> deb_fin at 10
R=[debut', fin', (fin'-debut')+1];
A l'aide du debug mode je vois bien que le problème vient des vecteurs debut et fin qui ne sont plus tous les deux en ligne, car fin de façon incompréhensible est devenue une colonne et donc R ne peut-être écrit ! Je ne comprends pas pourquoi mais j'ai besoin que le code marche à tous les coups, sauriez-vous m'aider ?