linear fit of a semilog graph
6 次查看(过去 30 天)
显示 更早的评论
Hello,
I have my data as follows with F1, F2, F3, N1, N2 and N3. I want to do a linear fit of my data and plot that. I tried polyfit as seen in my code. But it just plots a horizontal line...? I tried adding my vectors to a Ntot and Ftot as seen.
What should I do? Thank you.
F1=[200 200 200];
N1=[10000 15000 20000];
F2=[300 300 300];
N2=[8000 7000 7500];
F3=[100 100 100];
N3=[120000 140000 80000];
Ftot=[F3 F2 F1];
Ntot=[N3 N2 N1];
figure
semilogx(N1,F1,'o')
hold on
semilogx(N2,F2,'o')
semilogx(N3,F3,'o')
xlabel('N');
ylabel('F');
grid on
P = polyfit(Ntot,Ftot,1);
yfit = P(1)*Ftot+P(2);
plot(Ntot,yfit,'r-.');
xlim([1000 500000])
ylim([0 max(Ftot)+50])
2 个评论
Torsten
2014-11-19
According to your call to polyfit, the next line must read
yfit = P(1)*Ntot+P(2);
instead of
yfit = P(1)*Ftot+P(2);
Best wishes
Torsten.
采纳的回答
Erik
2014-11-19
编辑:Erik
2014-11-19
You should sort the values in
Ntot
using
[Ntot,i] = sort(Ntot);
and sort
Ftot
accordingly using
Ftot = Ftot(i);
Then you can do the
polyfit(...)
and as Torsten mentions, you should use
yfit = P(1)*Ntot+P(2);
Then plot it using
semilogx(Ntot,yfit,'r-')
although
plot(...)
also works. If you want the semilogarithmic plot to have a straight line, then use
log10(Ntot)
instead of
Ntot
in the line containing the
polyfit(...)
and the line containing
yfit = ...
更多回答(0 个)
另请参阅
类别
在 Help Center 和 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!