2011-04-06 26 views
2

我想知道是否有任何內置函數或簡單方法繪製2d array元素的直方圖。Matlab中2D矩陣元素的直方圖

例如,如果A=rand(100,1),然後A1D arrayhist(A)可以做直方圖。

但是,如果A=rand(100,100)和我想對A的元素進行直方圖,就像將A中的每個元素視爲1D array上的元素一樣。有沒有簡單的方法來做到這一點?

回答

2

此命令會做你想要什麼:

hist(reshape(A, prod(size(A)), 1)) 

它的作用是通過與一列,等於數的行數重塑成一個矩陣創建矢量出矩陣A的A的元素:

prod(size(A)) = number_of_columns(A) * number_of_rows(A) 

還是短方式:

hist(A(:)) 

這需要的每一個元素並且因此也產生矢量。

+1

'A(:)'作爲喬納斯的回答也一樣長重塑命令。 – abcd 2011-04-06 15:09:57

12

你只需要重塑A爲載體,那麼你可以使用hist像往常一樣:

hist(A(:)) 
+6

我喜歡MATLAB的簡單列矢量化,'A(:)',因爲它總是看起來像數組在微笑着,無論你朝哪個方向看:) – abcd 2011-04-06 15:11:28

+0

非常感謝,喬納斯!這正是我所尋找的 – 2011-04-06 15:23:51

+1

@Alfred:如果您發現我的答案有幫助,請考慮接受它。 – Jonas 2011-04-06 15:36:09