Re:Need help with creating a List
- To: mathgroup at yoda.ncsa.uiuc.edu (Mathematica Mailing List)
- Subject: Re:Need help with creating a List
- From: uunet!kinghorn.chem.WSU.EDU!don (Don Kinghorn)
- Date: Fri, 24 Aug 90 10:40:23 PDT
Begin recieved message: ************************************************************************************ . . . I am having some trouble with creating a list for plotting with ListPlot. As I understand it, what is needed is a list of lists, where each element of the main list is a list of two values, the x and y positions to be plotted. In my case, the x values are just a set of evenly spaced values, while the y values are the difference between some data I have and a functional form for the data. What I have is: func[x_] = "some long function" The data is in a list called "data" diff[x_] := data[[x]] - func[.05x] difftable = Table[ {.05i, diff[i]}, {i, Length[data]} ] My problem is the output of difftable. It looks like: {{.05, {value1}}, {.01, {value2}}, ....} What it needs to be for ListPlot to work (I think) is: {{.05, value1}, {.01, value2}, ....} I tried to make a test file with a simple func[x_] and just put in some datapoints, and there it did work. So I'm confused as to when and why mathematica is giving me {{xval1,yval1},{xval2,yval2}, ..} in one case and {{xval1,{yval1}}, {xval2,{yval2}}, ..} in the other case. Any ideas or suggestions? --Avi Feldblum ayf at pruxk.att.com or avi_feldblum at att.com *********************************************************************************** Look at your y data. I suspect that its in the form of a list of lists ( an nx1 matrix) and as a result your function diff is returning a vector. Try applying Flatten[] to your y data to put it in the form {y1,y2,y3, . . .}. This should give the result you want. Example: In[1]:= data=Transpose[{{1,2,3,4}}] Out[1]= {{1}, {2}, {3}, {4}} In[2]:= fcn[x_] := x-1/2 In[3]:= dif[x_] := data[[x]]-fcn[.05x] In[4]:= Table[{.05i,dif[i]},{i,Length[data]}] Out[4]= {{0.05, {1.45}}, {0.1, {2.4}}, {0.15, {3.35}}, {0.2, {4.3}}} In[5]:= data = Flatten[data] Out[5]= {1, 2, 3, 4} In[6]:= Table[{.05i,dif[i]},{i,Length[data]}] Out[6]= {{0.05, 1.45}, {0.1, 2.4}, {0.15, 3.35}, {0.2, 4.3}} I hope this helps. (this is only one of many possible solutions) Don Kinghorn