polyfit / polyval,带有对数刻度,通过matlab中的散点图

时间:2016-02-12 01:05:45

标签: matlab

我在Matlab中以对数刻度显示了x轴和y轴的散点图。如何在对数刻度上添加最佳拟合线? 谢谢!

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)

1 个答案:

答案 0 :(得分: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);

这是你想要的吗?