在Matlab中使用单个值的hist

在Matlab中使用单个值的hist,matlab,histogram,Matlab,Histogram,当您像这样使用hist函数时: [h x] = hist(data, 1000) 只要数据长度超过一个length(data)>1,就可以正常工作 但如果它是=1,则它将执行以下操作: 数据分布在-500到500之间。有没有办法阻止它这样做?您可以使用函数或逻辑索引找到数据的范围,然后使用轴([xmin-xmax-ymin-ymax])所述的属性您可以使用函数或逻辑索引找到数据的范围,然后使用轴([xmin-xmax-ymin-ymax])属性描述您正在使用的函数形式(hist(data,1

当您像这样使用hist函数时:

[h x] = hist(data, 1000)
只要数据长度超过一个
length(data)>1
,就可以正常工作

但如果它是
=1
,则它将执行以下操作:


数据分布在-500到500之间。有没有办法阻止它这样做?

您可以使用函数或逻辑索引找到数据的范围,然后使用
轴([xmin-xmax-ymin-ymax])
所述的属性您可以使用函数或逻辑索引找到数据的范围,然后使用
轴([xmin-xmax-ymin-ymax])
属性描述

您正在使用的函数形式(
hist(data,1000)
)意味着生成了1000个容器,而MATLAB默认使用宽度为1的大小调整它们,因为它没有关于数据范围的信息(单个值没有有意义的范围)。以下是来自以下网站的简介:

n=历史(Y,nbins),其中nbins是标量,使用nbins的箱数

有几个选项可以让它“更好”(用引号括起来,因为只有你知道你想要什么):

1) 您可以使用不同形式的函数指定垃圾箱的位置:

n=hist(Y,x),其中x是向量,返回Y在其中的分布 长度(x)箱,中心由x指定。例如,如果x是一个 五元素向量,hist将Y的元素分布到五个容器中 以x轴为中心,在x中的元素处,所有元素都不能 复杂的。注意:如果指定箱子边缘更自然,请使用histc 而不是中心

2) 如果小于某个最小值,则可以将存储单元数限制为数据向量中的元素数:

hist(data, min(1000, numel(data)))
3) 您可以检查特殊情况(如N=1)-您提到这是不可取的,但使用脚本/函数这一点都不困难,因此您可能必须澄清为什么这是不可接受的


4) 您可以在绘图后适当缩放x轴(类似于@Parag的答案)

您使用的函数形式(
hist(data,1000)
)意味着生成了1000个存储单元,而MATLAB默认以1的宽度调整它们的大小,因为它没有关于数据范围的信息(单个值没有一个有意义的范围)。以下是来自:

n=历史(Y,nbins),其中nbins是标量,使用nbins的箱数

有几个选项可以让它“更好”(用引号括起来,因为只有你知道你想要什么):

1) 您可以使用不同形式的函数指定垃圾箱的位置:

n=hist(Y,x),其中x是向量,返回Y在其中的分布 长度(x)箱,中心由x指定。例如,如果x是一个 五元素向量,hist将Y的元素分布到五个容器中 以x轴为中心,在x中的元素处,所有元素都不能 复杂的。注意:如果指定箱子边缘更自然,请使用histc 而不是中心

2) 如果小于某个最小值,则可以将存储单元数限制为数据向量中的元素数:

hist(data, min(1000, numel(data)))
3) 您可以检查特殊情况(如N=1)-您提到这是不可取的,但使用脚本/函数这一点都不困难,因此您可能必须澄清为什么这是不可接受的


4) 绘制后,您可以适当缩放x轴(类似于@Parag的答案)

不确定问题是否正确,但无论如何。。。xlim([xMin-xMax])?如果数据中有一个值,则其直方图中只有一个峰值。。。这是你的问题吗?嗯,我希望垃圾桶都在同一个地方,而不是分散在一个很大的区域,因为它破坏了我的地块。有没有办法阻止这种情况,我可以通过检查每个直方图前的长度来做到,但这有点糟糕。不确定我的问题是否正确,但无论如何。。。xlim([xMin-xMax])?如果数据中有一个值,则其直方图中只有一个峰值。。。这是你的问题吗?嗯,我希望垃圾桶都在同一个地方,而不是分散在一个很大的区域,因为它破坏了我的地块。有没有办法阻止这种情况,我可以通过检查每个直方图前的长度来做到,但这有点糟糕。