Plotting the mean and standard deviation of a given vector?
我已经为此搜索了很多,但似乎找不到任何人以最基本的形式提出这个问题。
我有一个向量 x,我已经获取了 mu mean 和 sigma std,我该如何绘制它以便我可以看到数据以钟形曲线的形式分布?
我在 MatLab 帮助中遇到的最接近的是 normspec,我想这不是我想要的。
编辑:
感谢您的所有回复。与其留下多条评论,我想我会编辑我的原始帖子。
我基本上有我的列向量 x,其中填充了 (BPM) 中的心率数据,所以我猜如果你绘制 X 轴,它的范围需要从 0 到 200。到目前为止,只是为了让我的结果更加具体,我一直在为平均值和标准差创建常量(如所指出的那样)。我希望能够像这样可视化这些数据(类似于模糊逻辑工具箱中的 gaussmf 函数):
您的其中一个答案可能是正确的,但我在编辑这篇文章时不抱歉,我对数学方面还不清楚。我正在学习概率和统计课程,但到目前为止,我的源文件只是将标准差引用为 \\'spread\\'。
- 这并不完全清楚。听起来您可能想使用 hist。
-
@OliCharlesworth:我同意。该帖子表明 OP 想要绘制均值和标准差,但在查看帖子时,OP 想要检查从正态分布中提取的值的分布。帖子的标题和正文有冲突。
-
使用 hist 命令。 @OliCharlesworth 是正确的。你可以使用 hist(x,nbins) 来指定你想要多少个 bin。例如,由于您的 BPM 来自 [0,200],也许您可??以拆分直方图,以便将它们按 20 BPM 间隔进行分箱,因此您需要 10 个分箱。因此,尝试做 hist(x,10);
-
谢谢 :-) 直方图也在我的研究清单上,所以会检查出来。在音频特征提取的背景下,nbin 是否像频率 bin?
-
是的!正是它。直方图基本上是一个频率计数器。在上面的示例中,您正在做的是收集数据,以便它们属于某些分类。如果我们选择 10 个 bin,这意味着您将有 10 个频率 bin,其中第一个反映了 [0, 19] 之间有多少 BPM,第二个反映了 [20, 39] 之间有多少 BPM,依此类推。您拥有的垃圾箱越多,连续垃圾箱之间的间距就越小。我不知道您的应用程序需要多少个 bin,但请使用 nbins 参数看看您会得到什么。你想让我更新我的答案吗?
-
很酷,好吧,我会玩它,并希望能在我正在处理的论文中展示一些有趣的东西:-) 感谢您的耐心,是的,如果您更新您的答案,我会很乐意接受它。
-
听起来不错!那我修改一下吧。如果您需要帮助,请告诉我。
-
再次感谢,会让你知道我的进展:-)
使用 hist 命令。 @OliCharlesworth 是正确的。你可以使用 hist(x,nbins); 来指定你想要多少个 bin。
例如,由于您的 BPM 来自 [0,200],也许您可??以拆分直方图,以便将它们按 20 BPM 间隔进行分箱,因此您需要 10 个分箱。因此,尝试做 hist(x, 10);
直方图基本上是一个频率计数器。在上面的示例中,您正在做的是收集数据,以便它们属于某些分类。如果我们选择 10 个 bin,这意味着您将有 10 个频率 bin,其中第一个反映了 [0, 19] 之间有多少 BPM,第二个反映了 [20, 39] 之间有多少 BPM,依此类推。您拥有的垃圾箱越多,连续垃圾箱之间的间距就越小。
我不知道您的应用程序需要多少个 bin,但请尝试使用 nbins 参数,看看您会得到什么。
钟形曲线方程如下:
1
| f (x, mu, sigma ) = (1/ (sigma* sqrt(2* pi)))*e^ (- (x-mu )^ 2/ (2*sigma^ 2)) |
我找不到将其放入更易于阅读的数学方程式的方法,因此如果您有兴趣,请点击以下链接:http://en.wikipedia.org/wiki/Normal_distribution
您找到的值(mu 和 sigma)是常数。要将其拟合到钟形曲线,您需要模拟曲线。等式中的 x 应该只是要绘制的向量或数组(这取决于您的数据)并且应该只是原始数据的长度。
希望这是有道理的。