具有巨大输入的matlab中的直方图

时间:2012-12-04 17:10:28

标签: matlab

我想在matlab中制作直方图。我的数据量很大(350万),x和y数据大小相同(均为350万)

我的原始数据有200,200,88个3D矩阵,我将其重新整理为1列 代码:

[dose , size] = Dose('C:\R1')
s = size(1)*size(2).size(3)
t = reshape(dose, s, [])

当我尝试命令hist(t)时,我只得到了一个1 bar。

我的工作区如下:

dose   <200x200x88 double>
s      3520000
size   [200,200,88]
t      <3520000x1 double>

你能告诉我如何使用这些数据制作直方图吗?

2 个答案:

答案 0 :(得分:1)

我能够生成大小为3520000x1的向量并使用它构建直方图。

  
    

VAL =兰特(3520000,1);

         

HIST(VAL)

  

您的数据可能有一些奇异的异常值,导致您的垃圾箱看起来像(1,0,0,...,3519999)。 如果你保存像h=hist(data);这样的直方图箱,你可以看到发生了什么。

答案 1 :(得分:0)

为了从3D阵列中获取单个长矢量,您只能使用(:)运算符。请尝试以下代码:

  
    

num_of_bins = 100; %改变为你想要的#     HIST(剂量(:),linspace(分钟(剂量(:)),最大值(剂量(:)),num_of_bins));

  

hist只会采用dose(最小到最大)的相关限制,您可以随意控制二进制数。我已经使用linspace来创建线性间隔的bin向量,但是通过分配不同的范围向量,这也可以修改为不同的bin集。