2016-12-29 16 views
3

我想幾個histogram輸出聚積成cell陣列,但它似乎是不可能的繪製或單個histogram命令的第一個執行後做什麼,因爲它只是一個handle to deleted Histogram如何使用直方圖處理器在MATLAB

>> x = randn(10000,1); 
>> h = histogram(x); 
>> h 

h = 

    handle to deleted Histogram 
>> whos h 
    Name  Size   Bytes Class          Attributes 

    h   1x1    104 matlab.graphics.chart.primitive.Histogram    

我知道,它可能在其計算直方圖寫入文件,How do I save histogram to file in matlab?。儘管我正試圖將其積累到單元陣列中以供以後分析。

+1

我想我明白你的意思了 - 數字關閉後,句柄被刪除。 – buzjwa

+0

我會說不累積句柄,只是累積來自['histcounts'](https://www.mathworks.com/help/matlab/ref/histcounts.html)的分級數據,並且只在你需要使用['bar'](https://www.mathworks.com/help/matlab/ref/bar.html)。應該在那裏完成任何想要應用於情節的更改。 – buzjwa

回答

3

這是由於BeingDeleted財產histogram它可以是隻讀的,所以你不能改變它。

但是,您可以複製另一個結構中的屬性供以後使用。修改代碼如下:

x = randn(10000,1); 
h = histogram(x); 
prop = properties(h); 
for i = 1:length(prop) 
    newh.(prop{i}) = h.(prop{i}); 
end 

現在的h所有屬性都存儲在newh將保留在那裏你關閉直方圖數字甚至之後。

1

正如在評論中有人建議,正確的方式做到這一點,如果你需要的是直方圖值,是使用histcounts

x = randn(10000,1); 
[N,edges] = histcounts(x); 

這樣你可以收集所有的垃圾桶x和y的值(分別爲edgesN),然後用bar對它們進行繪圖。這是與結果之間的比較演示:

subplot 121 
h = histogram(x) 
title('histogram') 
subplot 122 
b = bar(edges(1:end-1),N,'FaceColor',lines(1),... 
    'FaceAlpha',0.6) 
title('bar') 

bar vs hist

如果它顯示在完全相同的方式,直方圖histogarm做,你可以設置bar一些性能是非常重要的。