Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Topic: Single Trendline for multiple datasets
Replies: 2   Last Post: Jan 23, 2013 4:18 PM

 Messages: [ Previous | Next ]
 Derek Goring Posts: 3,920 Registered: 12/7/04
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 <5ee51095-fef4-4353-8f44-4474a719180f@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(:);

Date Subject Author
1/23/13 Derek Goring
1/23/13 dpb