2016-02-12 81 views
0

在Matlab中,我有一个散点图,其中x轴和y轴都是对数刻度。我如何在日志范围内添加一条最适合的线? 谢谢!在matlab中通过散射点的对数尺度的polyfit/polyval

x = [0.0090 0.0000 0.0001 0.0000 0.0001 0.0000 0.0097 0.0016 0.0006 0.0000 0.0016 0.0013 0.0023]; 
y = [0.0085 0.0001 0.0013 0.0006 0.0005 0.0006 0.0018 0.0076 0.0015 0.0001 0.0039 0.0015 0.0024]; 
scatter(x,y) 
set(gca,'YScale','log'); 
set(gca,'XScale','log'); 
hold on 
p = polyfit(log(x),log(y),1); 
f = polyval(p,x); 
plot(x,f,'Color',[0.7500 0.7500 0.7500],'linewidth',2) 
+0

你如何计划'polyfit'无穷?因为这就是你要从log(0)得到的结果。 – 2016-02-12 01:11:05

回答

1

当最适合的搜索,你需要使用原始数据xy,而不是他们的日志。日志量表仅用于表示结果。

在使用polyval之前,您需要对x进行排序。使用普通轴时无关紧要,但由于顺序错误,可能会出现对数轴奇怪的现象。

这里的情节:

enter image description here

代码:

x = [0.0090 0.0000 0.0001 0.0000 0.0001 0.0000 0.0097 0.0016 0.0006 0.0000 0.0016 0.0013 0.0023]; 
y = [0.0085 0.0001 0.0013 0.0006 0.0005 0.0006 0.0018 0.0076 0.0015 0.0001 0.0039 0.0015 0.0024]; 
scatter(x,y); 
set(gca,'YScale','log'); 
set(gca,'XScale','log'); 
hold on; 
x_sort = sort(x); 
p = polyfit(x,y,1); 
f = polyval(p,x_sort); 
plot(x_sort,f,'Color',[0.7500 0.7500 0.7500],'linewidth',2); 

它是你想要的吗?