我想在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>
你能告诉我如何使用这些数据制作直方图吗?
答案 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集。