MATLAB: Ajustement de courbe non linéaire dans MATLAB

Salut les gars! On me donne des données énormes. J’essaie d’adapter un ensemble de données dans un modèle de forme fonctionnelle comme décrit ci-dessous:
z (x, y) = c0. * x ^ 0 * y ^ 2 + c1. * x ^ 1 * y ^ 1 + c2. * x ^ 2 * y ^ 1
où c0, c1, c2 sont les coefficients à trouver.
Ma tentative consiste à utiliser la fonction nlinfit pour le résoudre.
Jusqu’à présent, j’ai essayé:
% je viens d’ajouter une petite partie de mes données
a = [0,001, 0,001, 0,001, 0,001, 0,001, 0,001, 0,001, 0,001, 0,001, 0,001,0,011, 0,011, 0,011, 0,011, 0,011, 0,011, 0,011, 0,011, 0,011, 0,011];
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
y = x. * a;
z = [-.304860225, .170315374, .343019354, .370114906, .373180536, .36719579, .363397853, .363417755, .366962504, .379710865, -.304860225, .170315374, .343019354, .36, 346 .36719579, .363397853, .363417755, .366962504, .379710865];
modèle = c0. * (x (:). ^ 0). * (y (:). ^ 2) + c1. * (x (:). ^ 1). * (y (:). ^ 1) + c2. * (x (:). ^ 2). * (y (:). ^ 0)
[c0 c1 c2] = [0,001 0,007 0,788]
C = nlinfit ([x, y], z, «modèle», [0,001 0,007 0,788])
% Ici x, y sont des variables indépendantes et z est une variable dépendante.
Comment définir ces valeurs initiales pour les coefficients? Je ne sais pas comment passer les arguments. J’obtiens cette erreur « ??? Fonction non définie ou variable ‘c0′ ». Aidez-moi !!!
Merci d’avance, Syeda

Meilleure réponse

  • La solution est triviale car vous avez un système d’équations linéaire pour les 3 coefficients
     

    A*c = b;
    c = A\b

     

  • MATLAB: Puis-je passer 2 équations en fonction nlinfit

    Bonjour, j’utilise la fonction nlinfit pour estimer les paramètres (constantes) d’une équation avec mes données. En fait, j’ai 2 équations différentes qui dépendent des mêmes constantes. Existe-t-il un moyen pour moi d’entrer 2 fonctions différentes et de récupérer des valeurs pour les constantes qui fournissent le meilleur ajustement sur les deux équations à partir de la fonction nlinfit? J’espère que ma question a du sens.
    Par exemple:
    équation 1: y1 = A * B * x / (1 + B * x + C)
    équation 2: y2 = A * B * x / (1 + B * x + C) ^ 2
    Mes données sont pour y1 et y2 en fonction de x

    Meilleure réponse

  • Si je me souviens bien,nlinfitne peut cependantlsqcurvefitpouvez:
    Cela marche:
     

    x = 1:10;
    y1 = rand(1,10);
    y2 = rand(1,10);
    objfcn = @(b,x) [b(1)*b(2).*x./(1 + b(2).*x + b(3)); b(1)*b(2).*x./(1 + b(2).*x + b(3)).^2];
    B = lsqcurvefit(objfcn, rand(3,1), x, [y1;y2]);

     

  • MATLAB: Erreurs standard pour les composantes de variance des modèles à effets mixtes non linéaires

    salut!
    J’estime un modèle à effets mixtes non linéaire en utilisant nlmefit, et bien que Matlab produise des erreurs standard pour les bêtas estimés, il ne produit pas d’erreurs standard pour les composantes de la variance (la matrice PSI). Comment puis-je obtenir / estimer les erreurs standard pour les composantes de la variance? Serait-il également possible d’estimer la s.e. pour les composantes de covariance de la matrice PSI?
    Toute aide sera vraiment appréciée du fond du cœur.
    Merci d’avance,

    Meilleure réponse

  • Une façon consiste à utiliser la fonction bootstrp. Pour chaque échantillon d’amorçage, vous écririez votre propre fonction pour appeler nlmefit et enregistrer les valeurs de matrice PSI en sortie. Après avoir fait cela pour de nombreux échantillons de bootstrap, vous pouvez obtenir des valeurs s.e.en utilisant les valeurs de matrice PSI stockées à partir des résultats de bootstrap individuels (par exemple,Wikipédia ).