【发布时间】:2011-04-06 14:59:42
【问题描述】:
我想知道是否有任何内置函数或绘制2d array 元素直方图的简单方法。
例如,如果A=rand(100,1),那么A是1D array,而hist(A)可以做直方图。
但是,如果A=rand(100,100),我想对A 的元素制作直方图,就像将A 中的每个元素视为1D array 上的元素一样。有没有简单的方法可以做到这一点?
【问题讨论】:
我想知道是否有任何内置函数或绘制2d array 元素直方图的简单方法。
例如,如果A=rand(100,1),那么A是1D array,而hist(A)可以做直方图。
但是,如果A=rand(100,100),我想对A 的元素制作直方图,就像将A 中的每个元素视为1D array 上的元素一样。有没有简单的方法可以做到这一点?
【问题讨论】:
你只需要将A重塑成一个向量,然后你就可以像往常一样使用hist了:
hist(A(:))
【讨论】:
A(:),因为无论从哪个方向看,数组似乎总是在微笑 :)
这个命令会做你想做的:
hist(reshape(A, prod(size(A)), 1))
它的作用是从矩阵 A 中创建一个向量,方法是将其重新整形为一个具有一列和行数等于 A 元素数的矩阵:
prod(size(A)) = number_of_columns(A) * number_of_rows(A)
或捷径:
hist(A(:))
这会按顺序获取 A 的每个元素,因此也会生成一个向量。
【讨论】:
A(:) 在乔纳斯的回答中与长整形命令相同。