Asked by Nathan Rivard
on 15 Oct 2019 at 19:57

I have a few thousand equations in y=mx+b form that I have acquired from hundreds of thousands of data points in multiple excel files. They are all trendlines of similar T-s data. I am attempting to create generalized trendlines of similar data types and I would like to be able to select formulas in y=mx+b form that I would like plotted, and then find the formula for the LOBF (Line of best fit) for that set of equations. I am new to MatLab and would just like some assistance in this.

Answer by Adam Danz
on 15 Oct 2019 at 21:20

Accepted Answer

I'm assuming you've read the data into Matlab and you've got a cell array of strings or character arrays named "data" that appears like this:

data =

3×6 cell array

Columns 1 through 3

{'y = 2.3297x + 1…'} {'y = 1.8866x + 1…'} {'y = 0.3373x + 1…'}

{'y = 1.9526x + 9…'} {'y = 1.7754x + 9…'} {'y = 2.774x + 68…'}

{'y = 1.9004x + 9…'} {'y = 1.9833x + 8…'} {'y = 3.1304x + 6…'}

Columns 4 through 6

{'y = 3.584x + 69…'} {'y = 2.1044x + 6…'} {'y = 0.0704x + 6…'}

{'y = 3.0042x + 6…'} {'y = 2.3015x + 5…'} {'y = 0.1415x + 6…'}

{'y = 3.1099x + 6…'} {'y = 2.466x + 60…'} {'y = 0.2486x + 6…'}

Execute these two lines below to extract the slope and intercept values from each string.

numVals = regexp(data,'[+-]?\d+\.?\d*', 'match');

mb = cellfun(@str2double, numVals, 'UniformOutput', false);

mb is a cell array the same size as "data" and contains the [slope,intercept] of each cell element.

mb =

3×6 cell array

{1×2 double} {1×2 double} {1×2 double} {1×2 double} {1×2 double} {1×2 double}

{1×2 double} {1×2 double} {1×2 double} {1×2 double} {1×2 double} {1×2 double}

{1×2 double} {1×2 double} {1×2 double} {1×2 double} {1×2 double} {1×2 double}

For example, for the equation in data(2,3), the slope and intercept are

mb{2,3}

ans =

2.774 68.856

To draw a regression line on a plot use refline()

refline(mb{2,3})

Adam Danz
on 16 Oct 2019 at 16:13

Glad I can help!

There is no single regression line for 8 difference slopes and intercepts.

Do you mean you want to average the slopes and average the intercepts? Maybe compute the medians? Note that if you've got both positive and negative slopes, the mean slope could be a poor representation of the distribution of slopes.

Nathan Rivard
on 16 Oct 2019 at 16:58

Adam Danz
on 16 Oct 2019 at 17:11

Continuing from the mb cell array in my answer,

allSlopes = cellfun(@(x)x(1),mb); %matrix of all slopes in mb

allInt = cellfun(@(x)x(2),mb); %matrix of all intercepts in mb

meanSlope = mean(allSlopes(:));

meanYint = mean(allInt(:));

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 9 Comments

## Adam Danz (view profile)

## Direct link to this comment

https://ww2.mathworks.cn/matlabcentral/answers/485532-graphing-base-form-of-y-mx-b-from-a-csv-file#comment_756659

## Nathan Rivard (view profile)

## Direct link to this comment

https://ww2.mathworks.cn/matlabcentral/answers/485532-graphing-base-form-of-y-mx-b-from-a-csv-file#comment_756670

## Adam Danz (view profile)

## Direct link to this comment

https://ww2.mathworks.cn/matlabcentral/answers/485532-graphing-base-form-of-y-mx-b-from-a-csv-file#comment_756672

## Nathan Rivard (view profile)

## Direct link to this comment

https://ww2.mathworks.cn/matlabcentral/answers/485532-graphing-base-form-of-y-mx-b-from-a-csv-file#comment_756673

## Adam Danz (view profile)

## Direct link to this comment

https://ww2.mathworks.cn/matlabcentral/answers/485532-graphing-base-form-of-y-mx-b-from-a-csv-file#comment_756674

## Nathan Rivard (view profile)

## Direct link to this comment

https://ww2.mathworks.cn/matlabcentral/answers/485532-graphing-base-form-of-y-mx-b-from-a-csv-file#comment_756678

## Adam Danz (view profile)

## Direct link to this comment

https://ww2.mathworks.cn/matlabcentral/answers/485532-graphing-base-form-of-y-mx-b-from-a-csv-file#comment_756680

## Nathan Rivard (view profile)

## Direct link to this comment

https://ww2.mathworks.cn/matlabcentral/answers/485532-graphing-base-form-of-y-mx-b-from-a-csv-file#comment_756683

## Adam Danz (view profile)

## Direct link to this comment

https://ww2.mathworks.cn/matlabcentral/answers/485532-graphing-base-form-of-y-mx-b-from-a-csv-file#comment_756684

Sign in to comment.