exponential fitting to limited data
    2 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Here is my data : 
y=[2.5648    1.2495    1.1663    1.0652    2.1537    1.3080    1.2624    1.2949]
I want to fit an exponential function to them. attached is the figure that I came up and doesn't make any sense to me. 
f = @(b,x) b(1).*exp(b(2).*x)+b(3);                                    
B = fminsearch(@(b) norm(y - f(b,x)), [-2; -1; 1])  ;                
figure
plot(x, y, 'ro','MarkerFaceColor','r')
hold on
plot(x, f(B,x), '-b','linewidth', 3)
hold off
0 comentarios
Respuestas (2)
  Star Strider
      
      
 el 8 de Oct. de 2020
        It needs to be changed slightly, adding an additional parameter: 
x = 35:5:70;
y = [2.5648    1.2495    1.1663    1.0652    2.1537    1.3080    1.2624    1.2949];
f = @(b,x) b(1).*exp(b(2).*(x-b(4)))+b(3);                                    
B = fminsearch(@(b) norm(y - f(b,x)), [1; -1; 1; 35])  ;                
figure
plot(x, y, 'ro','MarkerFaceColor','r')
hold on
plot(x, f(B,x), '-b','linewidth', 3)
hold off
Then, it is a bit more understandable, althoug still not an excellent fit.  
4 comentarios
  Walter Roberson
      
      
 el 9 de Oct. de 2020
        Your proposed function is a quite bad fit for your data.
With your function, the optimal fit drives b(2) to roughly -4 so you are dealing with an exp(-4*(35:5:70)) which gives you values that are non-zero for the first result and effectively zero by comparison for the others results. Then b(1) is driven to about 1e100 to balance out the exp(-4*35) to give a notable value for the first entry and effective zeros for the rest. Your fitting then becomes "non-trivial value for x = 35, zeros for the rest" plus b(3) -- so all of the fitting is going into matching the first datapoint, and the exp() makes the rest of them into noise.
I said above roughly -4 and about 1e100 but you can get slightly better fits by driving b(1) to 1e200 and b(2) about -6.4 which has the effect of lowering the contributions of the other entries even further towards 0.
So.. you get a pulse and a straight line.
Star Strider's idea of subtracting something from x is a decent one.
Ver también
Categorías
				Más información sobre Get Started with Curve Fitting Toolbox en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
