2012-02-03 181 views
1

我有一個向量,我想要打印的數據直方圖。該數據範圍從-100到+100。圍繞外邊緣的數據量是微不足道的,因此我不想看到它。我最感興趣的是顯示從-20到+20的數據。限制數據值顯示在MATLAB直方圖

1.)我怎樣才能限制那個窗口在我的直方圖上打印?

我擁有的數據量爲0,數據量爲我在數據集中任意位置的數據量的至少10:1。當我打印直方圖時,元素頻率的佈局會丟失,因爲它的數量超過了0.

2.)有沒有一種方法可以將0值的數量縮放爲-1個條目數量的三倍?

我期待這個數據集的指數下降(一般情況下),因此三倍於-1的頻率可以很容易地看到其他數據的頻率。

回答

1

1)你可以限制你的只是設置X軸的限制對劇情看直方圖範圍:

xlim([-20 20]) 

在HIST命令設置垃圾箱是好的,但要記住thatall的垃圾箱外的值會陷入最左和右單元。所以你需要設置軸限制。 2)如果不同箱體中的值存在很大差異,則一種方法是將Y軸上的值轉換爲對數刻度。不幸的是,將Y軸設置爲日誌(set(gca,'YScale','log'))不適用於條形圖。用histhistc(取決於您是否指定垃圾箱中心或邊緣)和log2的值計算直方圖:

[y, xbin] = hist(data); 
bar(xbin, log2(y) ,'hist') 
2

您可以使用類似

binCenters = -20:5:20; 
[N,X] = hist(V,binCenters); 

N = N./scalingVector; 
bar(X(2:end-1),N(2:end-1)); 

注意,代碼不包括NX極端從柱狀圖中,因爲它們含有低於-20值小大於20的數量和同樣,通過適當地構建scalingVector,您可以隨心所欲地縮放N.

0

直方圖有幾種不同的調用方法。我強烈建議您閱讀關於該功能的文檔(doc hist

您正在尋找的是將自定義範圍放在柱狀圖箱中。這取決於你想要多少個垃圾桶,但是這樣的事情會起作用。

Data=randn(1000,1)*20; 
hist(Data,-20:20); 

如果您願意,也可以更改分箱的頻率。您還可以更改座標軸,以便僅使用xaxis([ - 20 20])命令專注於-20至20的範圍。您也可以通過使用yaxis並限制值以排除0 bin來忽略0處的bin。不知道你想要什麼,我只能給你建議。

2

你也可以只折騰出[-20,20]的範圍之外的任何值,通過使用

subsetData=data(abs(data)<=20)