Wolfram mathematica 在mathematica中使用直方图时如何输出数据集
在Mma中,直方图函数仅生成图形。我想知道如何才能得到数据集;有什么方便的内置功能吗Wolfram mathematica 在mathematica中使用直方图时如何输出数据集,wolfram-mathematica,Wolfram Mathematica,在Mma中,直方图函数仅生成图形。我想知道如何才能得到数据集;有什么方便的内置功能吗 非常感谢。Mathematica V8中添加了HistogramList,以显示装箱和高度计算 HistogramList[a] 对于V7,您可以破解第三个参数以获取箱子和计数 Histogram[a, Automatic, (Print[{##}]; #2) &] 也许上网搜索也会有所帮助。这是我(2010年6月18日)对Mathematica新闻组comp.soft-sys.math.Math
非常感谢。Mathematica V8中添加了HistogramList,以显示装箱和高度计算
HistogramList[a]
对于V7,您可以破解第三个参数以获取箱子和计数
Histogram[a, Automatic, (Print[{##}]; #2) &]
也许上网搜索也会有所帮助。这是我(2010年6月18日)对Mathematica新闻组comp.soft-sys.math.Mathematica中一个类似问题的回答:
data = RandomReal[NormalDistribution[0, 1], 200];
res = Reap[Histogram[data, Automatic, (Sow[{#1, #2}]; #2) &]]
我觉得这个解决方案比Brett的稍微好一点,因为它以一种易于使用的格式返回数据
编辑要在任何仓位或计数操作后重新创建直方图,请按照下面Brett的建议进行操作。只需准备好垃圾箱并按如下方式计数:
bins = Union[ Flatten[res[[2, 1, 1, 1]]]];
counts = res[[2, 1, 1, 2]];
Histogram[data, {bins}, counts &]
我不确定垃圾箱是否保证按升序排列,因此您可能希望使用deleteplicates
,而不是Union
(哪种排序)
计数&
在这里是一个技巧。如“帮助”页面中所述,第三个位置的函数将获取一个箱子和计数列表,并返回一个高度列表。在这种情况下,它只会吞噬列表并返回计数。如果您正在使用V7,并且您对使用此技巧无法使用内置的箱子高度规范(“计数”、“概率”、“概率密度”等)感到不安,那么您可以修改Sjord上面的答案,以按照自己的意愿返回标准化的箱子。例如,如果您想使用
data = RandomReal[NormalDistribution[0, 1], 200];
Histogram[data, Automatic, "Probability"]
你可以用
res = Reap[Histogram[data, Automatic,
(ret = #2/Length[data];
Sow[{#1, ret}]; ret) &
]]
“概率密度”的模拟值为
有没有办法通过使用
BinCounts
函数在版本7中获得类似于HistogramList[a]
的输出?+1,很高兴知道这一点。在Histogram[a,Automatic,(Print[{{code}}}}}和]
生成数据之后,如果在我处理这些数据之后,如何以直方图形式再次绘制出来?@strong假设bin
和counts
包含数据,您应该能够使用类似Histogram[data,{Union[bin]},counts&]
的东西。(未经测试,因为我面前没有Mathematica。)+1为历史gramlist。在我背后进入剧场的众多新v8功能之一。@Sjoerd还可以看看SmoothKernelDistribution
,SmoothHistogramDistribution
,以及HistogramDistribution
,我喜欢你的。:)顺便说一句,在得到{{-2,-(3/2)},{-(3/2),-1},{-1,-(1/2)},{-(1/2),0},{0,1/2},{1/2,1},{1,3/2,{3/2,2},{2,5/2,3},{3,7/2},{5,23,36,37,43,27,18,9,1,0,1,1,1}之后,如何再次绘制代码<代码>直方图[数据,{Union[bins]},计数&]
在我的mma v7中似乎不起作用。谢谢
res = Reap[Histogram[data, Automatic,
(binWidth = #1[[1]][[2]] - #1[[1]][[1]];
ret = #2/(Length[data]*binWidth);
Sow[{#1, ret}]; ret) &
]]