声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1148|回复: 3

[编程技巧] 请问老师怎么进行双重循环

[复制链接]
发表于 2008-12-9 13:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
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循环,我不会用
回复
分享到:

使用道具 举报

发表于 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 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 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);


这个写的对吗
发表于 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); ...
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 16:16 , Processed in 0.055266 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表