嘘
,histc
)MATLAB的早期版本®使用嘘
和histc
函数是创建直方图和计算直方图库计数的主要方法。这些功能虽然适用于一般用途,但总体功能有限。的使用嘘
和histc
在新守则中,由于以下原因(除其他外)不鼓励:
在使用嘘
要创建直方图,修改直方图的属性是困难的,需要重新计算整个直方图。
的默认行为嘘
是使用10个箱子,不适合很多数据集。
绘制标准化直方图需要手工计算。
嘘
和histc
行为不一致。
的柱状图
,histcounts
,离散化
函数极大地提高了MATLAB中直方图创建和计算的能力,同时仍然提高了一致性和易用性。柱状图
,histcounts
,离散化
为新代码推荐的直方图创建和计算函数。
特别值得注意的是下列变化改进在嘘
和histc
:
柱状图
可以返回一个直方图对象。您可以使用该对象来修改直方图的属性。
这两个柱状图
和histcounts
具有自动装箱和标准化功能,内置几个常见选项。
histcounts
主要的计算功能是什么柱状图
。结果是函数具有一致的行为。
离散化
为确定每个元素的bin位置提供额外的选项和灵活性。
尽管有上述的改进,但仍有几个重要的改进差异在旧的和现在推荐的函数之间,这可能需要更新您的代码。这些表总结了函数之间的差异,并提供了更新代码的建议。
代码更新为嘘
区别 | 旧的行为嘘 |
新行为柱状图 |
---|---|---|
输入矩阵 |
= randn (100 2);嘘(A) |
= randn (100 2);h1 = histogram(A(:,1),10) edges = h1. binedges;hold on h2 =直方图(A(:,2),edges) 上面的代码示例为每个直方图使用相同的bin边,但在某些情况下,最好设置 |
本规范 |
|
将bin中心转换为bin边缘以供使用 请注意在箱子中心使用的情况下 直方图(“BinLimits”, [3 3],“BinMethod”,“整数”) |
输出参数 |
1 = randn (100);[N,中心]= hist(A) |
1 = randn (100);h =直方图(A);N = h。值Edges = h.BinEdges 请注意要计算箱数(不绘制柱状图),请替换 |
默认箱数 |
|
这两个 1 = randn (100);直方图(A) histcounts (A) |
本限制 |
|
如果 重现重现…的结果 一个=兰迪(5100 1);直方图(10“BinLimits”, [min (A) max (A)]) |
代码更新为histc
区别 | 旧的行为histc |
新行为histcounts |
---|---|---|
输入矩阵 |
10 A = randn (100);边缘= 4:4;N = histc(边缘) |
10 A = randn (100);边缘= 4:4;N = histcounts(边缘) 使用一个for循环来计算箱数在每个列。 10 A = randn (100);nbins = 10;N = 0 (nbins, size(A,2));k = 1:尺寸(2)N (:, k) = histcounts ((:, k), nbins);结束 如果由于矩阵中有大量列而造成性能问题,则考虑继续使用 |
最后一个容器中包含的值 |
|
一个= 1:4;N = histcounts(A) N = histcounts(A,edges) 最后一个垃圾箱 N = histcounts (“BinMethod”,“整数”); |
输出参数 |
1 = randn(15日);边缘= 4:4;[N,本]= histc (A,边缘) |
|
的嘘
函数接受bin中心,而柱状图
函数接受bin边。更新要使用的代码柱状图
,您可能需要斌中心转换成箱的边缘再现与取得的成果嘘
。
例如,指定使用的bin中心嘘
。这些箱子的宽度是一样的。
A = [-9 -6 -5 -2 0 1 3 3 4 7];中心= [-7.5 -2.5 2.5 7.5];嘘(中心)
为了将bin中心转换为bin边,计算连续值之间的中点中心
。的结果嘘
适用于均匀和非均匀料仓宽度。
d = diff(中心)/ 2;边缘=[中心(1)- d(1)中心(1:end-1) + d,中心(结束)+ d(结束)];
的嘘
函数包括位于每个容器右边缘的值(第一个容器包括两条边),而柱状图
包括位于每个容器左侧边缘的值(最后一个容器包括两条边)。稍微移动箱子边缘,以获得相同的箱子计数嘘
。
边边(2:结束)=(2:结束)+ eps(边缘(2:结束)
边缘=1×5-10.0000 -5.0000 0.0000 5.0000 10.0000
现在,使用柱状图
与bin的边缘。
直方图(边缘)