Fminsearch Matlab (Non Linear Regression )

折月煮酒 提交于 2020-01-12 10:53:09

问题


Can anyone explain to me how I can apply non linear regression to this equation t find out K using the matlab command window.

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

I have data values as follows:

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

[NEW]: Now I used FminSearch as an alternative another and another error message appeared.

Matrix dimensions must agree.

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

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

I used this fminsearch code:

>> 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);

回答1:


You want to find the parameter k that will minimize the sum of squared error of your exponential model (BTW, is that a current/voltage characteristic?) given the current data I and voltage data V as vectors:

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');

The anonymous function calculates the sum of squared error. The search for the parameter k that will minimize the model error starts with the value 1; please change it to a more appropriate value (if you have a good guess for it).



来源:https://stackoverflow.com/questions/35361989/fminsearch-matlab-non-linear-regression

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!