Matlab 以倍频程绘制对数图

Matlab 以倍频程绘制对数图,matlab,plot,octave,Matlab,Plot,Octave,我正在绘制一个图,我需要y轴到对数来正确地表达它。 我的代码使用的是符号学(厚度、衰减、“线型”、“无”、“标记”、“符号”)要绘制点,稍后添加线。然后,我使用ylim([0.5,e^2.5])设置y轴限制,只使用一些使它看起来很漂亮的值。它已正确缩放,但y轴记号无法正确传达y值。有没有办法让它更精确 这是我的密码: thickness = [0.0000001, 0.3793761225,1.214276572,2.040353323,2.689048044,4.146110391,10.0

我正在绘制一个图,我需要y轴到对数来正确地表达它。

我的代码使用的是符号学(厚度、衰减、“线型”、“无”、“标记”、“符号”)要绘制点,稍后添加线。然后,我使用
ylim([0.5,e^2.5])
设置y轴限制,只使用一些使它看起来很漂亮的值。它已正确缩放,但y轴记号无法正确传达y值。有没有办法让它更精确

这是我的密码:

thickness = [0.0000001, 0.3793761225,1.214276572,2.040353323,2.689048044,4.146110391,10.04557497,15.7447715,25.79869234,];
decay = [5.8784,7.146537842,6.165467626,5.636820926,5.302279485,4.375803624,2.204500978,1.337231057,0.6126601356,];
t=thickness(2:end);
d=log(decay(2:end));
p = polyfit(t,d,1);
m = p(1)
b = p(2)
gca = semilogy(thickness, decay, "linestyle", "none", "marker", '.');
hold on;
x = linspace(min(t),max(t), 100);
plot(x, e.^(m.*x+b));
title("The Radioactivity of Caesium-137");
xlabel("Thickness (mm)");
ylabel("Radioactivity Log(Becquerels)");
ylim([0.5, e^2.5])
#set(gca, 'ytick', [0,e^2]);

请添加一些有人可以尝试的代码。应使用8个代码行(带线性回归)feasible@Andy,谢谢我添加了我的代码。你不应该覆盖内置函数
gca
。如果您更改此设置,
集(gca,'ytick'…)
将按照您的预期工作。你也可以手动设置yticklabels,如果你想的话。我该怎么做?这似乎是解决我麻烦的办法。我看到了一些关于这个主题的文档,尽管一些分类的例子会有很大的帮助:我似乎已经通过
set(gca,'xtick',(0:13)),在不同的图形上得到了我想要的东西