我在Matlab中有一个类似于:
的向量vect = 0
100
300
500
700
1000
500
300
200
0
当标准化时,每个值应指示某个值的概率,我的值仅为1到10(即0%的概率为1,100/sum(vect)
概率为2,等等。
如何计算有关值的统计数据(特别是标准偏差)..?如果我做mean(vect)
,我最终会得到360,并且我得到一个类似的大标准偏差值。当然,平均值应该在5左右。我确定根本不会手动编写代码,但必须有一种方法直接在Matlab中执行此操作,所以我想我问!
答案 0 :(得分:2)
我不确定matlab是否有任何内置功能,但这没什么大不了的。无论如何两者都是一个衬里
vect = [0; 100; 300; 500; 700; 1000; 500; 300; 200; 0];
prob = vect./sum(vect);
val = [1:10].';
meanVal = sum(prob.*val);
stDev = sqrt( sum( prob.*val.^2 ) -sum(prob.*val)^2 );
编辑:
有两个功能可以做到这一点。它们也被称为mean
和std
。但他们改为采用概率分布对象。
答案 1 :(得分:1)
如果您致电stem(vect)
,您会发现vect
是正态分布变量的概率密度函数,因此您可以将正态分布拟合为vect
没有规范化
x = (1:length(vect))';
pdf = fitdist(x, 'normal', 'freq', vect);
结果的平均值为5.63889,标准差为1.66944。