필터 지우기
필터 지우기

Intercept of each line to y-line

조회 수: 10 (최근 30일)
Sarfaraz Ahmed
Sarfaraz Ahmed 2022년 2월 20일
편집: DGM 2022년 2월 20일
Hello folks,
I am making curve fit plot for some data and trying to make intercept point of each data line with y-line.
For examples. each line should give intercept point so there will be 10 intercept points which can be stored in any array.
I am concerning only x-axis value in the x-yline(1.5228, '--') intercept values. I tried with intercept commands but the problem is here I am dealing with objects.
I am share here code. please have a look and help in this regard, so that when I run a code it will provides x-y intercept values.
clear
close all
Data=[
0.11 0.3 0.28 0.6 0.31
0.23 0.78 0.57 1.08 0.43
0.26 0.95 0.84 1.25 0.46
0.55 1.2 1.1 1.5 0.75
6.95 7.05 8.25 7.35 7.15
5.2 4.34 4.68 4.64 5.4
4.81 4.74 4.21 5.04 5.01
3.96 4.07 3.96 4.37 4.16
3.88 3.78 3.25 4.08 4.08
2.69 2.4 2.81 2.7 2.89
2.36 2.35 2.7 2.65 2.56
2.24 2.28 2.35 2.58 2.44
1.9 2.07 1.94 2.37 2.1
1.7 1.95 1.68 2.25 1.9
0.57 1.67 1.47 1.97 0.77
0.47 0.89 1.1 1.19 0.67
];
figure(1)
plot(Data,'linewidth',1.0)
grid
legend('C1','C2','C3','C4','C5')
x=0:15;
x=x';
c1=Data(:,1);
c2=Data(:,2);
c3=Data(:,3);
c4=Data(:,4);
c5=Data(:,5);
f1 = fit(x(5:16),c1(5:16),'exp1');
f2 = fit(x(5:16),c2(5:16),'exp1');
f3 = fit(x(5:16),c3(5:16),'exp1');
f4 = fit(x(5:16),c4(5:16),'exp1');
f5 = fit(x(5:16),c5(5:16),'exp1');
figure(2)
plot(f1,'b')
hold on
plot(f2,'r')
plot(f3,'g')
plot(f4,'m')
plot(f5,'k')
yline(1.5228, '--')
grid
axis([0 17 0 7.5])
legend('C1','C2','C3','C4','C5')
Thank you.
  댓글 수: 2
Torsten
Torsten 2022년 2월 20일
f1(0),...,f5(0) are the y-intercepts.
Sarfaraz Ahmed
Sarfaraz Ahmed 2022년 2월 20일
편집: Sarfaraz Ahmed 2022년 2월 20일
Thank you for your answer. Actually, this one for y-intercept. I want to get intercept with yline(1.5228, '--').
for example, in the attached figure intercept for "f1" is "12.492". however when I display f1 it shows y-intercept not y-line intercept. can you please let me know how can I get intercept with y-lines ? I corrected a question little bit as well.
Thank you

댓글을 달려면 로그인하십시오.

채택된 답변

Torsten
Torsten 2022년 2월 20일
편집: Torsten 2022년 2월 20일
a = f1.a;
b = f1.b;
xintercept1 = 1/b*log(1.5228/a);
(Same for f2,f3,f4 and f5)
  댓글 수: 1
Sarfaraz Ahmed
Sarfaraz Ahmed 2022년 2월 20일
Great. It helps .
Thank you so much !!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

DGM
DGM 2022년 2월 20일
편집: DGM 2022년 2월 20일
Consider the example:
Data=[
0.11 0.3 0.28 0.6 0.31
0.23 0.78 0.57 1.08 0.43
0.26 0.95 0.84 1.25 0.46
0.55 1.2 1.1 1.5 0.75
6.95 7.05 8.25 7.35 7.15
5.2 4.34 4.68 4.64 5.4
4.81 4.74 4.21 5.04 5.01
3.96 4.07 3.96 4.37 4.16
3.88 3.78 3.25 4.08 4.08
2.69 2.4 2.81 2.7 2.89
2.36 2.35 2.7 2.65 2.56
2.24 2.28 2.35 2.58 2.44
1.9 2.07 1.94 2.37 2.1
1.7 1.95 1.68 2.25 1.9
0.57 1.67 1.47 1.97 0.77
0.47 0.89 1.1 1.19 0.67
];
ymark = 1.5228; % need to be able to use this
x = (0:15).';
plotcolors = {'b','r','g','m','k'};
f = cell(size(Data,2),1);
fk = zeros(size(Data,2),2);
for kn = 1:numel(f)
f{kn} = fit(x(5:16),Data(5:16,kn),'exp1');
fk(kn,:) = coeffvalues(f{kn});
plot(f{kn},plotcolors{kn})
hold on
end
yline(ymark, '--');
grid
axis([0 17 0 7.5])
intx = log(ymark./fk(:,1))./fk(:,2); % inverse of fit function
plot(intx,ymark,'kx') % show with marker
legend('C1','C2','C3','C4','C5')

카테고리

Help CenterFile Exchange에서 Specifying Target for Graphics Output에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by