fitting equation with condition on 1 parameter
    6 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
I have to fit an equation over my data. Equation has two unknows parameters to be found i.e a and b...but if i deliberately want that the b value should lie betweem 0.2 and 2 and then find 'a' and 'b'...how can i do that???
0 Commenti
Risposta accettata
  Matt J
      
      
 il 23 Gen 2014
        
      Modificato: Matt J
      
      
 il 23 Gen 2014
  
      Here is a simple script for fitting a Gaussian f(z) = a*exp(-b*z^2) using LSQCURVEFIT subject to bounds a>=0, 0<=b<=7. You should run it, study it, and adapt it to your needs.
f=@(p,z) p(1)*exp(-p(2)*z.^2); 
   x=linspace(0,2,10); 
   y=f([1,2],x)+rand(size(x))/10; %simulated data
p=lsqcurvefit( f, [.5,.5], x,y, [0,0],[inf,7]); %perform fit
   plot(x,y,'*', x, f(p,x)) ;
You should also, of course, read "doc lsqcurvefit" to understand the input syntax and know what additional options you have.
7 Commenti
Più risposte (2)
  Amit
      
 il 23 Gen 2014
        You can use fmincon.
I would think that these a and b are from you previous post, where fminsearch were used. fmincon is similar to fminsearch but support bounds. More details on fmincon is here http://www.mathworks.com/help/optim/ug/fmincon.html
4 Commenti
  Alan Weiss
    
      
 il 23 Gen 2014
        
      Modificato: Alan Weiss
    
      
 il 23 Gen 2014
  
      There are some documentation examples that show how to fit equations. Adding bound constraints is easy for lsqnonlin or lsqcurvefit.
Hope this helps,
Alan Weiss
MATLAB mathematical toolbox documentation
0 Commenti
Vedere anche
Categorie
				Scopri di più su Get Started with Curve Fitting Toolbox in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!