2017-10-14 263 views
1

我一直在試圖把我的圖形軸以log2的比例縮放,但在圖上出現了一些很奇怪的東西。第一個數據63出現在開始和x尺度的末尾,由於某種原因,第一個點不出現。此外,這些點並不完全集中在x-ticks上......你知道爲什麼嗎?Matlab log2圖形尺寸

在此先感謝您的幫助!

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) 

這裏是圖:

回答

1

你想

set(gca,'XTick',logfreq); 

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

隨着你的代碼不正確,63只出現在開始和結束,因爲有(錯誤地)10個勾號位置,但您只指定了9個標籤,因此第一個是代表eated。 (如果你只指定了8,那麼前2將會重複,等等)