parameter estimation using MATLAB

Having problems. I have test data and i want to estimate the parameters which will give me similar curve. I dont know what to do. Please help. Attached is my code. % ---- Main Code ------ % % First guess for parameters p0 = [10000, 1e-12, 50000, 20000];
% Load data
data = load('dev5_a.dat', 'ascii');
% First column is frequency in Hz, convert to rad/sec
freq = 2*pi*data(:, 1);
% Second column is magnitude impedance in Ohms
data(:,2) = (data(:,2));
% Third column is impedance angle in deg, convert to rads
data(:, 3) = data(:, 3);
z = [data(:,2) data(:,3)];
p0 = fminsearch(@(p0) costfun2(p0,z,freq),...
p0) ;
new = origmodel(p0,freq) ;
% plot original
close all
figure
%scatter(data(:,1),data(:,2))
plot(data(:,1),log(data(:,2)),'b')
% Plot estimate
hold on
%scatter(data(:,1),new(:,1))
plot(data(:,1),log(new(:,1)),'r')
% -- Calling function ----
function [out] = costfun2(p,z, f)
R1 = (p(1)); %*1e3;
C1 = (p(2)); %*1e-12;
R2 = (p(3)); %*1e3;
C2 = (p(4)); %*1e-12;
z1 = R1 - i./(f*C1);
z2_inv = (1/R2+1./z1);
z2 = (z2_inv).^-1;
zt = z2 - i./(f*C2);
znew(:, 1) = (abs(zt));
znew(:, 2) = angle(zt);
er = z(:) - znew(:);
out = er'*er;
txt = sprintf('The error is %f',out);
disp(txt)
% --- orig model ----
function [z] = origmodel(p, f)
R1 = (p(1)); %*1e3;
C1 = (p(2)); %*1e-12;
R2 = (p(3)); %*1e3;
C2 = (p(4)); %*1e-12;
z1 = R1 - i./(f*C1);
z2_inv = (1/R2+1./z1);
z2 = (z2_inv).^-1;
zt = z2 - i./(f*C2);
z(:, 1) = (abs(zt));
z(:, 2) = angle(zt);
return;
%%%%%------- Test DATA -----------
% Freq. [Hz] |Z| [Ohm] Angle [deg]
2.00000E+1 2.17111E+4 -4.97566E+1
2.40000E+1 1.95677E+4 -5.09048E+1
2.88000E+1 1.75852E+4 -5.18520E+1
3.45600E+1 1.57614E+4 -5.25666E+1
4.14720E+1 1.41032E+4 -5.31513E+1
4.97664E+1 1.25956E+4 -5.35962E+1
5.97197E+1 1.12928E+4 -5.40219E+1
7.16636E+1 1.00903E+4 -5.41847E+1
8.59963E+1 9.04188E+3 -5.43254E+1
1.03196E+2 8.09931E+3 -5.43871E+1
1.23835E+2 7.25300E+3 -5.43497E+1
1.48602E+2 6.49768E+3 -5.41649E+1
1.78322E+2 5.83313E+3 -5.38856E+1
2.13986E+2 5.23557E+3 -5.35058E+1
2.56784E+2 4.70178E+3 -5.30118E+1
3.08140E+2 4.24002E+3 -5.24886E+1
3.69769E+2 3.82403E+3 -5.19025E+1
4.43722E+2 3.45443E+3 -5.12147E+1
5.32467E+2 3.12396E+3 -5.04663E+1
6.38960E+2 2.82972E+3 -4.96907E+1
7.66752E+2 2.56319E+3 -4.88257E+1
9.20102E+2 2.32655E+3 -4.78864E+1
1.10294E+3 2.11354E+3 -4.68502E+1
1.32979E+3 1.92099E+3 -4.57067E+1
1.59574E+3 1.75442E+3 -4.44931E+1
1.89394E+3 1.61488E+3 -4.32674E+1
2.27273E+3 1.48251E+3 -4.18808E+1
2.72727E+3 1.36475E+3 -4.03953E+1
3.28947E+3 1.25807E+3 -3.87924E+1
3.94474E+3 1.16634E+3 -3.71557E+1
4.68750E+3 1.08959E+3 -3.55618E+1
5.68182E+3 1.01377E+3 -3.37151E+1
6.81818E+3 9.51390E+2 -3.19480E+1
8.33333E+3 8.91081E+2 -2.99645E+1
1.00000E+4 8.43392E+2 -2.81755E+1
1.19084E+4 8.03597E+2 -2.65023E+1
1.41176E+4 7.69179E+2 -2.48993E+1
1.71429E+4 7.34613E+2 -2.31238E+1
2.06897E+4 7.05560E+2 -2.14962E+1
2.40000E+4 6.85431E+2 -2.02984E+1
2.94118E+4 6.60834E+2 -1.87544E+1
3.52941E+4 6.41529E+2 -1.74947E+1
4.28571E+4 6.23334E+2 -1.63007E+1
5.00000E+4 6.10356E+2 -1.54652E+1
6.00000E+4 5.96319E+2 -1.46004E+1
7.24286E+4 5.84014E+2 -1.38975E+1
8.57143E+4 5.72033E+2 -1.32940E+1
1.00000E+5 5.62451E+2 -1.28862E+1
1.25000E+5 5.49142E+2 -1.24387E+1
1.50000E+5 5.38642E+2 -1.22093E+1
1.66667E+5 5.32645E+2 -1.21344E+1
2.00000E+5 5.22345E+2 -1.20683E+1
2.50000E+5 5.09576E+2 -1.21084E+1
3.20000E+5 4.95257E+2 -1.22910E+1
4.00000E+5 4.81978E+2 -1.25578E+1
4.80000E+5 4.70751E+2 -1.28357E+1
5.00000E+5 4.68159E+2 -1.29117E+1
6.40000E+5 4.52411E+2 -1.33648E+1
8.00000E+5 4.37780E+2 -1.38281E+1
9.60000E+5 4.25443E+2 -1.42423E+1
1.00000E+6 4.22626E+2 -1.43434E+1

Réponses (0)

Catégories

En savoir plus sur Get Started with Curve Fitting Toolbox dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by