Bonjour,
J'ai un problème de temps de calcul et de fonction qui ne converge dans un programme MATLAB que j'écris.
Le morceau de codes qui m'intéresse ressemble à cela grosso modo:
%input est une matrice de LG (valeur sans intérêt ici) sur N par exemple
x=[] % est créé au départ pout stocker les résultats
%paraini sont les paramètres initiaux de ma fonction.
% Si je les modifie, assouplis, ma fonction devrait converger et me produire mon output que je veux stocker dans x
%La fonction doit s'appliquer N fois (souvent plus de 100 ou 200 fois)
% j'ai besoin de commencer par les paraini contraignants pour avoir un output de la meilleure qualité possible
% chaque étape peut prendre plusieurs secondes (dizaines de secondes)
% au global ça peut durer plusieurs heures
for i=1:N
x(i)=mafonction(input(:,i),paraini);
end
le problème est que pour certaines des itérations sur i, mon programme bugge
tout se coupe
j'obtiens un "maximum recursionlimit of 1000 reached"
changer ce paramètre n'est pas une solution satisfaisante, parfois ça ne converge vraiment pas
ça m'arrangerait vraiment de pas faire le travail bloc par bloc et de devoir éventuellement rependre les itérations problèmatiques une par une.
il y a assurément une solution mais je n'arrive pas à la trouver/comprendre
Objectif
Que j'obtienne un output à chaque itération sur i en autorisant un assouplissement de paraini pour les itérations qui posent problème.
la solution doit passer par des stop, des timer, des stopFcn
En gros, il faut que la séquence à problème stoppe (sans planter tout le programme) si un temps limite de calcul est dépassé ou que l'on approche de la borne recursionlimit et que je puisse modifier/abaisser les paramètres (s'il le faut plusieurs fois) afin de donner des conditions plus favorables à mafonction et ainsi obtenir un ouput.
En espérant avoir été clair
Merci par avance de votre aide et idées
Nicolas