2016-02-12 3 views
2

Quelqu'un peut-il m'expliquer comment je peux appliquer une régression non linéaire à cette équation t trouver K en utilisant la fenêtre de commande matlab.Fminsearch Matlab (régression non linéaire)

I = 10^-9 (exp (38,68V/k) -1). Screenshot of Equation

J'ont des valeurs de données comme suit:

Voltage := [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]: 
Current:= [0, 0, 0, 0, 0, 0, 0, 0.07, 0.92, 12.02, 158.29]: 

Screenshot of Equation

[NOUVEAU]: Maintenant, je FminSearch comme alternative une autre et un autre message d'erreur est apparu.

Matrix dimensions must agree. 

Error in @(k)sum((I(:)-Imodel(V(:),k)).^2) 

Error in fminsearch (line 189) 
fv(:,1) = funfcn(x,varargin{:}); 

J'ai utilisé ce code fminsearch:

>> V = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]; 
>> I = [0, 0, 0, 0, 0, 0, 0.07 ,0.92 ,12.02 ,158.29]; 
>> Imodel = @(V,k) 1E-9*(exp(38.68*V/k)-1); 
>> k0 = 1; 
>> kmodel = fminsearch(@(k) sum((I(:)-Imodel(V(:),k)).^2), k0)  
>> kmodel = fminsearch(@(k) sum((I(:)-Imodel(V(:),k)).^2), k0); 
+0

Pouvez-vous poster une image dans une version au format LaTeX de cette formule? Voulez-vous dire qu'il y a des pouvoirs imbriqués? Quoi qu'il en soit, avez-vous envisagé de faire une régression log-linéaire (c'est-à-dire prendre des journaux des deux côtés, puis faire une régression linéaire)? – Dan

+0

Related: http://stackoverflow.com/questions/29634183/exponential-curve-fitting-with-the-curve-fitting-toolbox – Jubobs

+0

@Dan, j'ai joint la capture d'écran de l'équation réelle. – Saavin

Répondre

5

Vous voulez trouver le paramètre k qui réduira au minimum la somme des erreurs au carré de votre modèle exponentiel (BTW, est qu'une caractéristique courant/tension?) étant donné les données actuelles et les données I de tension V comme vecteurs:

Imodel = @(V,k) 1E-9*(exp(38.68*V/k)-1); 
k0  = 1; 
kmodel = fminsearch(@(k) sum((I(:)-Imodel(V(:),k)).^2), k0); 

plot(V(:), I(:), 'ok', V(:), Imodel(V(:),kmodel), '-r'); 

La fonction anonyme calcu Laisse la somme des erreurs au carré. La recherche du paramètre k qui minimisera l'erreur du modèle commence par la valeur 1; s'il vous plaît changer à une valeur plus appropriée (si vous avez une bonne estimation pour cela).

+1

J'ai ces valeurs, j'ai besoin de trouver k; Tension: = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]: Courant: = [0, 0, 0, 0, 0, 0, 0, 0.07, 0.92, 12.02, 158.29]: – Saavin

+6

@Saavin Désolé, mais j'ai déjà donné la solution. L'as tu essayé? Avez-vous besoin d'aide supplémentaire pour l'appliquer à votre cas? J'ai regardé votre profil, et j'ai lu que vous maîtrisez MATLAB, donc j'ai supposé que vous pouvez adapter la solution à vos besoins. –

+0

@Saavin J'ai changé le code de sorte qu'il est plus lisible, plus j'ai ajouté un graphique de données par rapport au modèle. –