我为此搜索过高低,似乎找不到任何人以最基本的形式提出这个问题。
我有一个向量x
,我已经使用了mu mean
和sigma std
,我如何绘制这个以便我可以看到数据在表单中的传播钟形曲线?
我在MatLab帮助中遇到的最接近的是normspec
,我想这不是我想要的。
编辑:
感谢所有回复。而不是留下多个评论,我想我会编辑我原来的帖子。
我基本上有我的列向量x
,其中填充了(BPM)中的心率数据,所以我猜你是否正在绘制X轴,它需要的范围从0
到200
。到目前为止,为了使我的结果更加切实,我一直在创建平均值和标准差的常数(如指出的那样)。我希望能够将这些数据可视化与此类似(类似于模糊逻辑工具箱中的gaussmf
函数):
你的一个答案可能是正确的,但我在编辑这篇文章时不确定。对不起,我对数学方面一无所知。我正在学习概率和统计学课程,但到目前为止,我的源文件只是将标准差引用为“传播”。
答案 0 :(得分: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应该只是一个要映射的向量或数组(这取决于你的数据),应该只是原始数据的长度。
希望这是有道理的。
答案 1 :(得分:1)
使用hist
命令。 @OliCharlesworth是对的。您可以使用hist(x,nbins);
指定所需的容器数量。
例如,由于您的BPM来自[0,200]
,您可以拆分直方图,以便在20个BPM间隔内对其进行分箱,因此您需要10个分箱。因此,请尝试hist(x, 10);
直方图基本上是频率计数器。通过上面的示例,您正在做的是收集数据,以便它们落入某些容器中。如果我们选择10个分箱,这意味着您将拥有10个频率分箱,以便第一个分区显示[0, 19]
之间的BPM数量,第二个分配在[20, 39]
之间等等。您拥有的垃圾箱越多,连续垃圾箱之间的间距就越小。
我不知道你的应用程序需要多少个垃圾箱,但要使用nbins
参数,看看你得到了什么。