从计数向量绘制直方图
Plot histogram from vector of counts
如果我有直方图边和 bin 计数的向量,是否可以使用它直接生成直方图?
例如,给定数据向量
edges = 0:10; % histogram edges for 9 bins
counts = round(normpdf(edges(1:end-1), 5, 2) * 1000) % Generate bin counts
counts =
9 27 65 121 176 199 176 121 65 27
我总是可以人工生成数据作为
data = [];
for i = 1:numel(counts)
% This should be optimised by pre-allocating the data array,
% but this is only provided as an example.
data = [data (ones(1, counts(i)) * mean(edges(i:i+1)))];
end
这样 numel(data) == sum(counts)
和我就可以使用 histogram(data, edges)
:
绘制直方图
但是,我想这样做而不必执行生成人工数据的中间步骤,因为这看起来相当复杂。
我知道我可以使用 bar
函数,但我更愿意使用 histogram
,因为我更喜欢它的绘图方式和它提供的功能。
编辑: 我正在使用 MATLAB R2015a / R2015b,尽管我更愿意尽可能保持与 R2015a 的向后兼容性(我知道 histogram
在 R2015b).
我认为您无法避免将实际数据提供给 Histogram
对象。 Histogram
对象的功能包括能够在事后更改 bins/edges,为此它需要知道其源数据。
如果我有直方图边和 bin 计数的向量,是否可以使用它直接生成直方图?
例如,给定数据向量
edges = 0:10; % histogram edges for 9 bins
counts = round(normpdf(edges(1:end-1), 5, 2) * 1000) % Generate bin counts
counts =
9 27 65 121 176 199 176 121 65 27
我总是可以人工生成数据作为
data = [];
for i = 1:numel(counts)
% This should be optimised by pre-allocating the data array,
% but this is only provided as an example.
data = [data (ones(1, counts(i)) * mean(edges(i:i+1)))];
end
这样 numel(data) == sum(counts)
和我就可以使用 histogram(data, edges)
:
但是,我想这样做而不必执行生成人工数据的中间步骤,因为这看起来相当复杂。
我知道我可以使用 bar
函数,但我更愿意使用 histogram
,因为我更喜欢它的绘图方式和它提供的功能。
编辑: 我正在使用 MATLAB R2015a / R2015b,尽管我更愿意尽可能保持与 R2015a 的向后兼容性(我知道 histogram
在 R2015b).
我认为您无法避免将实际数据提供给 Histogram
对象。 Histogram
对象的功能包括能够在事后更改 bins/edges,为此它需要知道其源数据。