# Lsqcurvefit on function depending on syms

6 visualizzazioni (ultimi 30 giorni)
Gustav il 12 Mar 2012
Hi.
I'm using the int command to integrate a huge expression, using syms. The expression is saved in a variable "funk". In funk is a constant that I need to determine by fitting "funk" to my experimental data. For this I have tried to use lsqcurvefit, but I can't get this to work by simple putting "funk" in the expression where the function is suppose to be written. This is how it looks:
funk=huge expression with syms x
xdata=..
ydata=..
lsqcurvefit(@(x,xdata) funk, [some value] ,xdata,ydata)
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Seth DeLand il 12 Mar 2012
Hi Gustav,
You'll first need to use the matlabFunction command to convert the symbolic equation into a MATLAB function handle or file: http://www.mathworks.com/help/toolbox/symbolic/matlabfunction.html
There's an example here that should help: (see Figure 2) http://www.mathworks.com/tagteam/62669_91801v00_SymbolicGradient_Hessian_final.pdf
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Più risposte (2)

Gustav il 12 Mar 2012
Ok, thanks!
Still, don't get it work. Heres an example (if I can get this to work it will solve my real problem):
xdata = [2;4;6]; %data
ydata = 3*sin([5;4;6])+6; %data
syms d t
uttryck=d*cos(t);
funk=matlabFunction(uttryck);
t=xdata;
d = lsqcurvefit(@(d,t) funk,7,t,ydata)
But I get the error message "Function value and YDATA sizes are incommensurate."
Simply, I'm trying to optimize d to fit the experimental data. Whats wrong?
##### 1 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
Seth DeLand il 13 Mar 2012
Because funk is already a function handle (that's what matlabFunction created), you don't need to use the @(d,t) syntax when passing it to lsqcurvefit. You can just pass funk:
d = lsqcurvefit(funk,7,t,ydata)

Accedi per commentare.

Gustav il 16 Mar 2012
Nice! Works perfectly! Thank you so much!
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Categorie

Scopri di più su MATLAB 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!

Translated by