Matlab log2 图尺度

Matlab log2 graph scale

我一直试图将我的图形轴设置为 log2 比例,但图形上出现了一些很奇怪的东西。第一个数据 63 出现在 x-scale 的开头和结尾,由于某种原因第一个点没有出现。此外,这些点并不完全集中在 x-ticks...你知道为什么吗?

在此先感谢您的帮助!!!

clear all; clc;
%% Vectors

freq=[63 125 250 500 1000 2000 4000 8000 16000]
logfreq=log2(freq);
Lp1=[93.9 93.9 93.8 93.8 93.8 93.6 93.3 91.8 87.8]
Lp2=[93.9 93.9 93.8 93.8 94 94.1 94.4 94.6 95.3]
Lp3=[93.9 93.9 93.9 93.8 94.1 94.4 95.2 97.2 100.9]

%% Plot

figure
plot(log2(freq),Lp1,'+-','linewidth',1.7)
hold on; grid on;
plot(log2(freq),Lp2,'+-','linewidth',1.7)
plot(log2(freq),Lp3,'+-','linewidth',1.7)
set(gca,'fontsize',20)
set (gca, 'XTickLabel', logfreq);
set(gca,'XTickLabel',
{'63','125','250','500','1000','2000','4000','8000','16000'})
xlabel('Frequency [Hz]','fontsize',20)
ylabel('Pressure Level [dB]','fontsize',20)
leg=legend({'Sin correcion','Campo libre','Incidencia aleatoria'},'fontsize',18)

这是图:

你想要

set(gca,'XTick',logfreq);

而不是set(gca,'XTickLabel',logfreq)

由于您的代码不正确,63 出现在开始和结束处,因为有(不正确的)10 个 x 刻度位置,但您只指定了 9 个标签,因此重复了第一个标签。 (如果您只指定了 8,那么将重复前 2 个,等等)