【问题标题】:How do I plot values in an array vs the number of times those values appear in Matlab?如何绘制数组中的值与这些值在 Matlab 中出现的次数?
【发布时间】:2016-03-11 04:09:43
【问题描述】:

我有一组年龄(超过 10000 个),我想在 x 轴上绘制一个年龄从 20 到 100 岁的图表,然后每个年龄在 y 上的数据中出现的次数轴。我已经尝试了几种方法来做到这一点,但我无法弄清楚。我还有一些其他数据需要我绘制值与它们出现的次数,所以任何关于如何做到这一点的建议将不胜感激。

我是 Matlab 的新手,所以如果你能解释答案中的事情是如何工作的,而不仅仅是输入一些代码,那就太好了。

谢谢。

编辑:

所以我输入了 histogram(Age, 80) 因为据我了解,这会将直方图上的 Age 值绘制成 80 个条形图(每个年龄 1 个条形图)。相反,我得到了这个:

条形图未对齐,显然不是每个年龄 1 个,也没有在 y 轴上绘制每个年龄出现的次数。

【问题讨论】:

  • 在最新的 Matlab 版本中查看 histhistogram
  • 是的,我不知道如何使该功能做我想做的事。我已经尝试了几件事,但它不起作用。
  • 发布一个带有可运行代码的最小示例,并告诉您卡在哪里,以便我们提供帮助
  • 我已将我输入的内容添加到主帖中。

标签: matlab plot


【解决方案1】:

你必须使用histogram(),这是正确的。
让我们看一个例子。

我提取了 20 到 100 之间的 100 个年龄:

ages=randsample([20:100],100,true);

现在我用这种方式打电话给histogram()

h=histogram(ages,[20:100]); 

其中h 是一个直方图对象,这也将显示以下图:

但是,由于我的年龄向量在 20:100 范围内,因此这可能看起来很容易,因此它不会包含任何其他值。相反,如果您的向量还包含不在 20:100 范围内的年龄,您可以将附加选项 'BinLimits' 指定为 histogram() 中的第三个输入,如下所示:

h=histogram(ages,length([20:100]),'BinLimits',[20:100]); 

此选项使用ages 中介于 20 到 100 之间的值绘制直方图。

注意:通过检查h,您实际上可以查看和/或编辑直方图的某些特性。您可能感兴趣的此类对象的属性(字段)是 Values。这是一个长度为 80 的向量(在我们的例子中,因为我们使用 80 个 bin),其中第 i 个元素是第 i 个 bin 的项目数。这将帮助您计算出现次数(以防您需要它们继续进行分析)。

【讨论】:

  • 这些条没有正确对齐。它不可能是正确的,因为使用该等式表明没有 31 岁的年龄,但数据中有。我只想要一个 20 岁、21 岁​​、22 岁、...、100 岁的人数的条形图,高度是那个年龄的人数。
  • 没关系,我通过 histogram(Age,[20:1:100]) 来指定我想要的宽度为 1。
  • 哦,是的,对不起,我的错。我在前面的示例中使用了hist(),但后来我意识到您使用的是histogram(),所以我编辑了我的答案,但我忘了删除length() 函数!
【解决方案2】:

就像 Luis 在 cmets 中所说,hist 是要走的路。您应该指定 bin 边缘,而不是 bin 的数量:

ages = randi([20 100], [1 10000]);
hist(ages, [20:100])

这是你要找的吗?

【讨论】:

    猜你喜欢
    • 2021-04-02
    • 2021-04-17
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多