Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
Drexel University or The Math Forum.



Re: Single Trendline for multiple datasets
Posted:
Jan 23, 2013 4:18 PM


On Thursday, January 24, 2013 10:03:08 AM UTC+13, Charlotte wrote: > TideMan <mulgor@gmail.com> wrote in message <5ee51095fef443538f444474a719180f@googlegroups.com>... > > > On Thursday, January 24, 2013 9:24:08 AM UTC+13, Charlotte wrote: > > > > I have a plot with multiple datasets plotted, and would like to plot on top a single trendline for all the datasets  is there an easy way to do this? > > > > > > 1. Assemble all the data into two vectors, x and y > > > x=[x1(:);x2(:); etc ]; > > > 2. Fit a line to the data using least squares: > > > coef=[x ones(length(x),1)]\y; > > > 3. Define the line: > > > xfit=[min(x) max(x)]; > > > yfit=coef(1)*xfit + coef(2); > > > 4. Plot > > > plot(x,y,'bo',xfit,yfit,'r') > > > > > > thank you very much for your reply  I get an error on the coef line: > > ??? Error using ==> horzcat > > CAT arguments dimensions are not consistent. > > > > Error in ==> Postplotmultiples_CAD at 44 > > coef=[x ones(length(x),1)]\y; > > > > fyi  my x vector has multiple instances of the same value > > > > so my y vector will be something like [332.456 345.321 234.543 453.456, etc.] > > and my x will be [1 2 1 2, etc.] > > > > any help much appreciated!
Your x is a row vector, whereas ones(length(x),1) is a column vector. You need to make them consistent by transposing (append an apostrophe): coef=[x' ones(length(x),1)]\y'; alternatively: coef=[x(:) ones(length(x),1)]\y(:);



