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
2018 年 6 月 22 日
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
2018 年 6 月 22 日
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
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
2018 年 6 月 22 日
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
2018 年 6 月 23 日
0 投票
See my attached polyfit() demo.

2 件のコメント
nancy
2018 年 6 月 24 日
Image Analyst
2018 年 6 月 24 日
The demo runs fine. How did you change it? Post your data and code.
カテゴリ
ヘルプ センター および File Exchange で Linear and Nonlinear Regression についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!