linear fit in Log Scale + extension

8 ビュー (過去 30 日間)
Niklas Kurz
Niklas Kurz 2020 年 6 月 16 日
コメント済み: Niklas Kurz 2020 年 6 月 17 日
Hello, also this question might be trivial and frequently answered, but yet again I'm not able to grasp it. Long story short, that's what I got:
ind = f>=5000& f <= 10000
p = polyfit(f(ind),qU(ind),1);
t = polyval(p,(f(ind)));
plot(f(ind),t,'-r','Linewidth',3);
actually this looks like a straight line to me, even if I set:
set(gca,'XScale','log')
set(gca,'YScale','log')
However I want to extend this line, lets say to [5000 15000]. How can I finally achieve this? Thx in advance

採用された回答

David Hill
David Hill 2020 年 6 月 16 日
編集済み: David Hill 2020 年 6 月 16 日
ind = f>=5000& f <= 10000
p = polyfit(f(ind),qU(ind),1);%you will always get a line if degree is 1
x=5000:15000;
t = polyval(p,x);
plot(x,t,'-r','Linewidth',3);
  3 件のコメント
Niklas Kurz
Niklas Kurz 2020 年 6 月 16 日
編集済み: Niklas Kurz 2020 年 6 月 16 日
so in comparision: Linear scale with Lines
David Hill
David Hill 2020 年 6 月 17 日
p1 = polyfit(f(1:2),qU(1:2),1);%however many points you want
p2 = polyfit(f(3:end),qU(3:end),1);%second line
x=5000:15000;
t1 = polyval(p1,x);
t2 = polyval(p2,x);
plot(x,t1,'-r',x,t2,'-g','Linewidth',3);

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

その他の回答 (1 件)

Niklas Kurz
Niklas Kurz 2020 年 6 月 17 日
Thank you for your effort, that is what I implemeted:
p1 = polyfit(f(1:2),qU(1:2),1);%however many points you want
x=5000:50000;
t1 = polyval(p1,x);
plot(x,t1,'-r','Linewidth',3);
p2 = polyfit(f(3:8),qU(3:8),1);%second line
x=15000:640000;
t2 = polyval(p2,x);
plot(x,t2,'-g','Linewidth',3);
However: that is what I receive: Sorry for bothering you still, but its not quite running well due to my lack of log-knowledge.
  1 件のコメント
Niklas Kurz
Niklas Kurz 2020 年 6 月 17 日
Okay, I finally unravelled he solution, it proved to be a really tricky one:
p1 = polyfit(log(f(1:2)),log(qU(1:2)),1);%however many points you want
x=5000:50000;
t1 = polyval(p1,log(x));
hold on
loglog(x,exp(t1))
p2 = polyfit(log(f(3:8)),log(qU(3:8)),1);%however many points you want
x=5000:640000;
t2 = polyval(p2,log(x));
hold on
loglog(x,exp(t2))
I view you answere as correct bc your extension was really valuable. Many thanks.

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

カテゴリ

Help Center および File ExchangeInterpolation についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by