2017-03-07 111 views
2

我使用兩個腳本創建直方圖,一個是matlabs自己的hist函數,另一個是我下載的腳本。我下載的腳本獲取絕對最小值和最大值,並在它們之間生成一個直方圖。但問題是,與MATLAB不同,此直方圖不顯示。我提出了一個載體。如何創建直方圖的直方圖?

現在爲了比較這兩個視覺我使用plot,但由於某種原因,規模的變化。對於使用例如直方圖MATLAB的hist如下圖所示:

enter image description here

如果我在plot顯示此柱狀圖中,x軸的比例變化:

enter image description here

我怎樣才能保持比例相同?

我需要這個,因爲下載的腳本不會生成直方圖,所以要顯示它我使用plot。再次情節是介於0和100之間,我覺得這可能不是一個準確的比較

+2

哪個版本的MATLAB是這樣的?通常情況下,您可以使用'hist'(倉中心)的輸出之一作爲第二個曲線圖的'x'值,而不是使用'plot(counts)'繪圖... –

+0

我正在使用Matlab 2016a – StuckInPhD

+0

The腳本應該告訴你bin邊緣,或者更好的是它用來建立直方圖的bin中心。它是否這樣做? –

回答

4

看來,你沒有使用所有可用的信息在您的處置。請參閱下面的代碼示例你想怎麼可以做什麼:

  • histogram,密謀使用時(:

    %% Generate some data: 
    rng(42653042); 
    data = randn(300); data = (data-min(data(:)))*90+100; 
    data(1:4:end) = data(1:4:end)/2; 
    %% Plot using hist: 
    figure(); hist(data(:),100); 
    %% Return bin info using hist: 
    [N,X] = hist(data(:),100); 
    %% Plot the other function's output w/o X: 
    figure(); plot(N); 
    %% Plot the other function's output w/ X: 
    figure(); plot(X,N); 
    figure(); bar(X,N); 
    

    功能hist應在MATLAB的較新版本被替換即hist沒有輸出的情況)。

  • histcounts用於計數時(即帶輸出的hist的情況)。
+0

謝謝,我不知道第二個輸出。這修復了matlab輸出。但我不能再比較,因爲我使用的腳本(上面添加)不提供這樣的第二個輸出,並且當它被繪製時,我再次得到0到100之間的圖。 – StuckInPhD

+0

@StuckInPhD您不需要第二個腳本輸出其他東西。它只給你計數('N')...和你應該已經從你自己的'hist'中得到的位置('X')... –

+0

Thanks @ Dev-il。我需要第二個腳本來生成一個固定的最小值和最大值之間的直方圖,Matlab doies沒有這個,每個直方圖都適合它自己的最小值和最大值。兩者的形狀和輸出也非常不同。出於分類的目的,所有的直方圖必須在固定比例之間,比如-50到250之間。我無法找到matlab的「hist」的設置 – StuckInPhD

3

使用「n = hist(Y,x)其中x是一個向量,返回長度爲(x)的中心的分佈,中心用x」指定中心,以指定垃圾桶中心。