ListPlotFit
- To: mathgroup at smc.vnet.net
- Subject: [mg17147] ListPlotFit
- From: Maarten.vanderBurgt at icos.be
- Date: Sun, 18 Apr 1999 00:59:38 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Hello,
With the function ListPlotFit below I combine ListPlot with Fit and Plot in
order to show the data from list l together with the straight line fitted
through a part of the data points from list l. The list l is of form
{{x1,y1},{x2,y2}, ...}.
The part of the data points I want to fit a line through is determined by
start and stop. The default value for the optional argument stop is 10.
This is not really what I want: I want the default value for stop to be
stop = Length[l]. How can I achieve this?
I tried ListPlotFit[l_, start_:1, stop_:Hold[Lenght[l]] := Module[{},stop =
ReleaseHold[stop];...], but this did not work (I get an error: "Hold is
Protected..."). I think I need Hold or something of the sort otherwise
Lenght[l] gets evaluated to 1 immediately.
I guess I can phrase my question more general: how do I define a function F
with an optional argument v which has as default value a function g of a
non-optional argument u (i.e. F[u_, v_:g[u]])?
In[1]:= ListPlotFit[l_, start_:1, stop_:10] :=
Module[
{lp, fie, fiep},
lp = ListPlot[l, DisplayFunction -> Identity, PlotStyle ->
PointSize[0.015], PlotRange -> All];
fie = Fit[l[[Table[j, {j, start, stop}]]], {1, x}, x];
fiep = Plot[fie, {x, 1, Length[l]}, DisplayFunction -> Identity];
Show[lp, fiep, DisplayFunction -> $DisplayFunction]
]
In[2]:= dat= Table[{i,3*i^2+5+2*(Random[]-0.5)},{i,1,15}];
In[3]:= ListPlotFit[dat, 2, 12];
Any help is greatly appreciated
thanks
Maarten
_______________________________________________________________
Maarten van der Burgt
R&D Department
ICOS Vision Systems
Esperantolaan 9
B-3001 Leuven, Belgium
tel. + 32 16 398220; direct + 32 16 398316; fax. + 32 16 400067
e-mail: maarten.vanderburgt at icos.be
_______________________________________________________________