problème Matlab

Bonjour à tous

J'ai un problème en Matlab, après l'exécution d'un programme il affiche le message suivant:

??? Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N)
to change the limit. Be aware that exceeding your available stack space can
crash MATLAB and/or your computer.

Error in ==> normpdf at 22
end

Si vous pouvez m'expliquer ce que signifie ça?

Merci

Réponses

  • Cela signifie que tu utilises une fonction récursive qui crée une pile de plus de 500 appels. On ne va pas pouvoir t'en dire beaucoup plus si tu ne nous donne pas un exemple (le plus court possible) de code qui te renvoie cette erreur.
  • Bonjour,

    C'est très clair, mais peut-être ton problème vient il du fait que tu ne lis pas l'anglais ?
    Tu as une fonction récursive qui s'appelle un peu trop elle-même.

    Cordialement,

    Rescassol
  • Merci à vous, le programme est comme suit
    function Lkl=likelihood(alp,delt,sig,Delt,beta,k,x,y)
    n=50;N=50;
    alp=0.4;delt=0.01;sig=0.1;beta=0.9;Delt=0.2;
    x=rand(1,n);
    k=15;
    y=randn(1,n);
    
    calcul vraisemblance
    for t=1:N
    for i=2:n
        vrais1(1,t)=1;
        vrais1(i,t)=normpdf(y(i),beta*x(i)+alp*(y(i-1)-beta*x(i-1)), sqrt(delt^2*(y(i-1)-beta*x(i-1))^2+sig^2));
        vrais1(k,t)=normpdf(y(k),beta*x(k)+Delt+alp*(y(k-1)-beta*x(k-1)), sqrt(delt^2*(y(k-1)-beta*x(k-1))^2+sig^2));
    end
    end
    vrais1;
    Lkl=prod(vrais1);
    
    Metropolis Hastings
    M=10;
    beta(1)=0.9;alp(1)=0.4;Delt(1)=1;delt(1)=0.07;sig(1)=0.1;
    
    for t=2:M
    betastar(t)=normpdf(beta(t-1),0.1);
    alpstar(t)=normpdf(alp(t-1),0.4);
    Deltstar(t)=normpdf(Delt(t-1),0.7);
    deltstar(t)=normpdf(Delt(t-1),0.3);
    sigstar(t)=normpdf(sig(t-1),0.1);
    
     u=rand;
     r1(t)=min([(likelihood(alpstar, deltstar, sigstar, Deltstar, betastar, k,x,y) 
                    / likelihood(alp(t-1,1),delt(t-1,1),sig(t-1,1),Delt(t-1,1),beta(t-1,1),k,x,y)),1]);
     if u<r1(t)
         beta(t)=betastar;
     else
         beta(t)=beta(t-1);
     end
     end
    beta
    
  • Bonne nuit,

    Skilveg t'avait écrit "un exemple (le plus court possible) de code".
    Tu trouves que ce que tu nous montres est "le plus court possible" ?
    On ne connaît pas ton problème, que veux tu qu'on comprenne ?
    De plus les indentations ne sont inventées pour rien, et il existe le bouton
    "Code formaté" sur lequel tu aurais pu cliquer.

    Cordialement,

    Rescassol
Connectez-vous ou Inscrivez-vous pour répondre.