0342147 发表于 2009-1-27 17:48

求助:一个关于标准偏差的计算的问题

有一组二进制数a,100万位,将其数中的0都变为-1,然后向左移一位,移动前与移动后的数的前10位的各位相乘,结果然后再相加,例如:

      11-1   -1111-1-1
    ×1 -1-1    111 -1-1   1
————————————————
      1 -1    1-111 -1   1-1          相加s1=1-1+1-1+1+1-1+1-1=1

以后每移动一次都和原数a做同样的相乘与相加得到s,然后求出s的标准偏差,

标准偏差公式:g= Sqr(∑(sn-s拨)^2 /(n))
公式中∑代表总和,s拨代表s的算术平均值,^2代表二次方,Sqr代表平方根。


我做出如下的程序:


clear all
clc
a=load('ransuu5.txt');%读出数据ransuu5.txt
a(find(a==0))=-1;
for i=1:1000000;
b=circshift(a,-);
d(1:10)=a(1:10).*b(1:10);
e=sum(d(1:10));
f=sum(e)/1000000;
g(i)=sqrt(sum((f-e)^2)/1000000);
end
plot(g(1:100))

但是我得出的结果不正确。请高手指教,哪里有问题,怎样修改,谢谢。

ChaChing 发表于 2009-1-28 23:40

回复 楼主 0342147 的帖子

ransuu5.txt可否上传?
a等於什麽? 数值或文字?
楼主的程序, 感觉很怪! 没有错误讯息吗?

0342147 发表于 2009-1-29 17:56

a是一个100万位的二进制数值,由于文件太大,无法上传.不过有一个512位的数值可以作参考.运行的时候没有出现错误的讯息.

ChaChing 发表于 2009-1-30 21:48

过年期间, 有点懒的细看! 刚刚细看下楼主的程序并试试! 可能专业水平有限, 不是很明白楼主爲何如此计算的逻辑! 还是有些疑问?
每次相乘与相加得到的s, 不是应该是一个值而已, 即e值仅一个值, 哪来标准偏差? 还有爲何画g(1:100), 要判断什麽?
是不是要求一系列s的标准偏差? 但楼主的程序每次回圈好像都在算! 不解!
还有标准偏差有现成的函数std!

0342147 发表于 2009-3-10 16:48

e是想求每向左移动一次得出来的值,所以应该有512个;
至于画g(1:100),现在我也觉得有点多余,应该去掉.现在不解的是,运行结果总是不对.
页: [1]
查看完整版本: 求助:一个关于标准偏差的计算的问题