parameter estimation using MATLAB
Afficher commentaires plus anciens
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 Multivariate Models 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!