How to make linear fit?

Hi; I want to plot a linear fit for the graphic in the attached file. And also I want to calculate slope of this linear fit? How can I do this? File is in the attached file.. Thanks a lot.

回答 (2 件)

Star Strider
Star Strider 2018 年 6 月 22 日

0 投票

Try this:
I = openfig('test.fig');
Ax = gca;
L1 = findobj(Ax, 'Type','line'); % Find ‘line’ Object
x = L1.XData; % Extract X-Data
y = L1.YData; % Extract Y-Data
XL = [min(x) max(x)]; % Get X-Limits
P = [x(:), ones(size(x(:)))] \ y(:); % Estimate Linear Fit Parameters
LinFit = [XL(:) [1;1]] * P; % Linear Fit
Slope = P(1);
hold on
plot(XL, LinFit, '-r', 'LineWidth',1.5)
hold off

5 件のコメント

Steven Lord
Steven Lord 2018 年 6 月 22 日
Or consider using the Basic Fitting UI directly in your figure.
Matt Dickson
Matt Dickson 2018 年 6 月 22 日
Also consider using polyfit to perform the regression and simplify the code, if you want it done in the script.
Star Strider
Star Strider 2018 年 6 月 22 日
My code estimates, calculates, and plots a linear fit.
It estimates the parameters as ‘P’, and then calculates a regression line in ‘LinFit’. This is likely more efficient than polyfit and polyval for a simple linear fit.
nancy
nancy 2018 年 6 月 22 日
Hi,
I want to use polyfit command. But how can I write a code in the script to use polyfit?
Star Strider
Star Strider 2018 年 6 月 22 日
編集済み: Star Strider 2018 年 6 月 24 日
To use polyfit:
I = openfig('test.fig');
L = findobj(gca, 'Type','line'); % Find ‘line’ Object
x = L(2).XData; % Extract X-Data
y = L(2).YData; % Extract Y-Data
x = x(y > -2); % Remove Outliers
y = y(y > -2); % Remove Outliers
XL = [min(x) max(x)]; % Get X-Limits
P = polyfit(x, y, 1); % Estimate Linear Fit Parameters
LinFit = polyval(P, XL); % Linear Fit
Slope = P(1);
figure
plot(x, y)
hold on
plot(XL, LinFit, '-r', 'LineWidth',1.5)
hold off
EDIT Added plot image.

サインインしてコメントする。

Image Analyst
Image Analyst 2018 年 6 月 23 日

0 投票

See my attached polyfit() demo.

2 件のコメント

nancy
nancy 2018 年 6 月 24 日
When I execute the code; I have below message:
Polynomial is not unique; degree >= number of data points. > In polyfit at 71 In Untitled at 7
How can I solve it? Thanks a lot..
Image Analyst
Image Analyst 2018 年 6 月 24 日
The demo runs fine. How did you change it? Post your data and code.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeLinear and Nonlinear Regression についてさらに検索

質問済み:

2018 年 6 月 22 日

コメント済み:

2018 年 6 月 24 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by