2017-10-14 6 views
1

Ich habe versucht, meine Grafikachse in log2-Skala zu setzen, aber etwas ziemlich seltsam erscheint auf der Figur. Die ersten Daten 63 erscheinen am Anfang und am Ende der X-Skala und aus irgendeinem Grund erscheint der erste Punkt nicht. Auch sind die Punkte nicht genau auf die X-Ticks zentriert ... hast du eine Idee warum?Matlab log2 Grafikskala

Vielen Dank im Voraus für Sie Hilfe !!!

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) 

Und hier ist die Figur:

Antwort

1

Sie wollen

set(gca,'XTick',logfreq); 

statt set(gca,'XTickLabel',logfreq)

Mit Ihrem falschen Code, die 63 erscheint am Anfang und das Ende, weil Es gibt (inkorrekt) 10 x tick locations, aber Sie geben nur 9 Labels an und daher ist das erste rep gegessen. (Wenn Sie nur 8 angegeben hätten, würden die ersten 2 wiederholt usw.)