3

我正在尝试在 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 条。

我的工作区如下:

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

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

4

2 回答 2

1

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

val=rand(3520000,1);

历史(val)

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

于 2012-12-04T17:26:43.910 回答
0

为了从 3D 数组中获取单个长向量,您可以只使用(:)运算符。试试下面的代码:

num_of_bins = 100 ; % 更改为你想要的任何 # hist(dose(:),linspace(min(dose(:)),max(dose(:)),num_of_bins));

hist将仅采用dose(最小到最大)的相关限制,您可以随意控制垃圾箱的数量。我曾经linspace创建一个线性间隔的 bin 向量,但这也可以通过分配不同的范围向量来修改为不同的 bin 集。

于 2012-12-04T20:30:03.517 回答