2010-12-14 66 views
1

salut
J'ai un programme MATLAB dans lequel je dessine plusieurs histogrammes. chaque fois que l'hist est redimensionné (les axes). Je veux que tous les hists soient montrés à la même échelle.
c'est le programme:échelle fixe de plusieurs hist dans MATLAB

clc 
close all 
PopSize=10^3; 
SampleSize=1:100:PopSize; 
NumberOfSamples=10^2; 
Pop=randn(PopSize); 
figure(NumberOfSamples+1); 
hist(Pop); 
sample=[]; 
for j=1:100:PopSize 
for i=1:1:NumberOfSamples 
    Pop=SHUFFLE(Pop); 
    sample(i)=mean(Pop(1:j)); 
end 
figure(i+j); 
hist(sample); 
end 

Répondre

0

Vous pouvez utiliser la commande AXIS à la fois obtenir et définir les limites d'axe. Par exemple, après votre première parcelle, vous pouvez faire axvals = axis();, et après chaque parcelle suivante faire axis(axvals); pour définir tous les graphiques aux mêmes limites que le premier.

1

Si vous voulez dire que vous voulez que tous les appels hist d'utiliser les mêmes intervalles de comptage (« bacs » ou « seaux »), utilisez:

hist(Y,x) 

x est un vecteur de centres de bin. Vous pouvez également utiliser histc si vous souhaitez spécifier les bords de la corbeille au lieu des centres.

1

considérer cette modification de code:

%# ... 
h = []; 
for j=1:100:PopSize 
    %# ... 
    h(end+1) = gca;      %# get handle to histogram axis 
end 

mx = max(cellfun(@max,get(h,'YLim'))); %# get the max count of all histograms 
set(h, 'YLim',[0 mx])      %# set the y-limit of all axes 
+0

+1 pour h (fin + 1) – zellus