prince00840 发表于 2008-12-9 13:17

请问老师怎么进行双重循环

x=(一组随机误差符合正态分布的数);
N=10;
x1=x(1:1:N);x2=x(N+1:1:2*N);%每相邻十个数组成一个数组
    m1=mean(x1);
    m2=mean(x2);
for i=1:N;
d1=sum((x1(1,i)-m1).^2)
d2=sum((x2(1,i)-m2).^2);
end
t=(m1-m2)/(d1+d2);%得到统计量t

我现在表示的头20个数分成了两组,进行统计得出t
怎么表示继续以后的数进行每20个数,分两组 得出t
应该应该用一个for循环,我不会用

ChaChing 发表于 2008-12-9 13:51

回复 楼主 prince00840 的帖子

无需双重循环
x=rand(200,1); N=10; ng=length(x)/N/2;
for i=1:ng, ii=2*N*(i-1)+1;
   x1=x(ii:N+ii-1); x2=x(N+ii:2*N+ii-1); m1=mean(x1); m2=mean(x2);
   d1=sum((x1-m1).^2); d2=sum((x2-m2).^2); t(i)=(m1-m2)/(d1+d2);
end
我懒得优化, 楼主自己试试
其实matlab有许多现成函数可用, 楼主help std...

[ 本帖最后由 ChaChing 于 2008-12-9 14:10 编辑 ]

prince00840 发表于 2008-12-10 09:02

谢谢楼上的ChaChing:loveliness:
x=rand(200,1); N=10; ng=length(x)/N/2;
for i=1:ng, ii=2*N*(i-1)+1;
   x1=x(ii:N+ii-1); x2=x(N+ii:2*N+ii-1);
以上是您给出的,比较的这是每10个数一组,第1组和第2组比较,第3组和第4组,第5组和第6组比较,
依次类推。就是这样子的,非常感谢!!!


举一反三推广:假设我按照顺序,依次比较相邻的每10个数。
即比较第1组和第2组,第2组和第3组,第3组和第4组以此类推......
x=rand(200,1); N=10; ng=length(x)/N/2;
for i=1:ng; ii=2*N*(i-1)+1;
   x1=x(ii:N+ii-1); x2=x(ii+1:N+ii);

这个写的对吗

ChaChing 发表于 2008-12-10 13:19

回复 板凳 prince00840 的帖子

x=rand(200,1); N=10; ng=length(x)/N-1;
for i=1:ng, ii=N*(i-1)+1;
   x1=x(ii:N+ii-1); x2=x(N+ii:2*N+ii-1); ...
页: [1]
查看完整版本: 请问老师怎么进行双重循环