8 views (last 30 days)

Robert U
on 23 Apr 2020

Hi RAPHAEL OWENS,

there are several solvers and methods available. One of the available functions in Matlab is lsqcurvefit(). Below there is a sketch of how to apply the function on your (supposedly) available data.

% known parameters

T

e_g

eV

k

i_ph

m_1

Ut

% underlying equation

Is = @(c_01) c_01 * T^3 * exp((-e_g*eV)/(k*T));

I = @(c_01,U) i_ph - Is(c0_1) .* (exp(U./(m_1*Ut))-1);

% start value(s) for optimization

c_01_guess = 1;

% choose algorithm, and possibly other options for optimization solver

opt = optimoptions('lsqcurvefit');

opt.Algorithm = 'levenberg-marquardt';

% run optimization

c_01_opt = lsqcurvefit(I,c_01_guess,U_measured,I_measured,[],[],opt);

Kind regards,

Robert

Robert U
on 24 Apr 2020

I don't know that tool. You can ask a new question in the forum. I am sure that someone can elaborate on that.

Kind regards,

Robert

Robert U
on 5 May 2020

Hi RAPHAEL OWENS,

I am not sure whether I understood your question correctly: Where do I acquire xdata and ydata on real data?

Usually you are measuring the U-I-curve by supplying U and measuring I. In that case the real data are "U" (xdata) and "I" (ydata). The grid does not matter since you are trying to fit the data to a model function. It just needs to be fine enough to cover the overall model function characteristics.

In a nutshell:

- Supply U (xdata)
- Measure I (ydata)
- Give known parameters
- Fit to model funcion.

Kind regards,

Robert

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.