我希望将x轴以2为底数取对数:从2的10次方到2的25次方,每一步指数都应该增加1,同时y轴应该是线性的。
这可能吗?我已经想到了
set(gca,'XScale','log')
但是你不能设置基准值。
我希望将x轴以2为底数取对数:从2的10次方到2的25次方,每一步指数都应该增加1,同时y轴应该是线性的。
这可能吗?我已经想到了
set(gca,'XScale','log')
但是你不能设置基准值。
考虑以下示例:
%# some random data
x = 2.^(0:10);
y = rand(size(x));
plot(log2(x), y) %# plot on log2 x-scale
set(gca, 'XTickLabel',[]) %# suppress current x-labels
xt = get(gca, 'XTick');
yl = get(gca, 'YLim');
str = cellstr( num2str(xt(:),'2^{%d}') ); %# format x-ticks as 2^{xx}
hTxt = text(xt, yl(ones(size(xt))), str, ... %# create text at same locations
'Interpreter','tex', ... %# specify tex interpreter
'VerticalAlignment','top', ... %# v-align to be underneath
'HorizontalAlignment','center'); %# h-aligh to be centered
plot (log2(x), y)
但是这样你的x轴刻度将是对数而不是实际值。你可以只改变标签。
xlabel('Log (base 2) of quantity X');
或者您可以手动重新绘制刻度。
xt = get(gca, 'XTick');
set (gca, 'XTickLabel', 2.^xt);
或者你可以非常花哨
xticks = 10:25;
set(gca, 'XTick', xticks);
for j = 1:length(xticks)
xtl{j} = ['2^' num2str(xticks(j))];
end
set(gca, 'XTickLabel', xtl)
它将在对数刻度上均匀分布刻度标记,并根据它们的2次幂对其进行标记
LOG base n (x) = LOG (x) / LOG (n)
x = 2.^(0:10);
y = log2(x);
plot(log2(x), y)
set (gca, 'XTickLabel', strcat('2^{',num2str(log2(x(:))),'}')); % or
set (gca, 'XTickLabel', strcat('$2^{',num2str(log2(x(:))),'}$'));% forlatex interpreter
有类似于 semilogx() 的函数吗?