matlab里怎么获取 n=1:15里每一次循环时n的值,我这总是得不到,很急

佳悦 2017-05-02 08:49:29
clc,clear
f = [1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16];
L=1;
T=15;
d_final=zeros(16,240);
d_temp=zeros(16,240);
for m=1:L
n=1:T
f_temp = reshape(f,1,[]);
%idx = randperm(length(f_temp));
idx=randsample( f_temp, length(f_temp), 0 );
f_temp = f_temp(idx);
[p q] = size(f);
f_temp = reshape(f_temp,p,q);
o=(n-1)*16;
k=1:8
i=f_temp(k,1);
j=f_temp(k,2);
d_temp(i,j+o)=1;
d_temp(j,i+o)=1;
end
c=sum(d_temp(1,:));

这个o得到的不是每一次循环的值,而是一个数组,很急,希望尽快回复
...全文
982 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
佳悦 2017-05-14
  • 打赏
  • 举报
回复
clc,clear f = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]; L=20000;%设置最多模拟20000次赛程编程 T=15; %表示15轮比赛 quit=0; v=0; d_final=zeros(16,240);%保存最终结果的矩阵,生成16行240列的矩阵,16行代表16支队伍,240=15×16里的15代表15轮,16代表16支队伍,1-16列代表第一轮,17-32代表第二轮,以此类推 result=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15];%result数组存储的是轮数 for m=1:L d_temp=zeros(16,240);%临时生成16行240列的矩阵,16行代表16支队伍,240=15×16里的15代表15轮,16代表16支队伍,1-16列代表第一轮,17-32代表第二轮,以此类推 for n=1:T f_temp = reshape(f,1,[]); %idx = randperm(length(f_temp)); idx=randsample( f_temp,length(f_temp),0);%这里用randsample而不用randperm是因为randsample比randperm效率更高,计算更快 f_temp = f_temp(idx); [p q] = size(f); f_temp = reshape(f_temp,p,q);%重新生成一个8行两列的矩阵,表示一轮中的对战情况,1代表1号队,依次类推 o=(result(n)-1)*16; for k=1:8 i=f_temp(k,1); j=f_temp(k,2); d_temp(i,j+o)=2;%矩阵中2代表i为主场 d_temp(j,i+o)=1;%矩阵中1代表i为客场 if m==14%进行到14轮比赛 if(i~=1&&j~=6)&&(i~=10&&j~=15)&&(i~=3&&j~=4)&&(i~=9&&j~=12)&&(i~=6&&j~=1)&&(i~=15&&j~=10)&&(i~=4&&j~=3)&&(i~=12&&j~=9)%同城(省)市球队之间比赛不安排在最后几 %轮 d_final=d_temp; end if m==15 if(i~=1&&j~=6)&&(i~=10&&j~=15)&&(i~=3&&j~=4)&&(i~=9&&j~=12)&&(i~=6&&j~=1)&&(i~=15&&j~=10)&&(i~=4&&j~=3)&&(i~=12&&j~=9)%同城(省)市球队之间比赛不安排在最后几 %轮 %终止条件 quit=1; end end end end end %各球队最后两轮比赛均为一个主场和一个客场 for s=1:16 a0=0; b0=0; %列208~223是第14轮 for t=208:223 if d_temp(s,t)~=0 a0=d_temp(s,t) end end %列224~240是第15轮 for u=224:240 if d_temp(s,u)~=0 b0=d_temp(s,u) end end %如上面程序设置2为主场,1为客场,那么如果14轮和15轮的数值相等,则不符合要求 if a0==b0 v=1 end end for p=1:16%16行循环,原则上任一球队的连续主场或客场不超过 2 个 a=zeros(1,15);%a用来记录每一行有主场或客场的列值 i=1; for q=1:240 if d_temp(p,q)~=0 a(i)=q; i=i+1; end end for c=1:length(a)-2 %程序的终止条件 if (d_temp(p,a(c))+d_temp(p,a(c+1))+d_temp(p,a(c+2)))~=6&&(d_temp(p,a(c))+d_temp(p,a(c+1))+d_temp(p,a(c+2)))~=3&&quit==1&&v==0 d_final=d_temp; break end end end end

2,408

社区成员

发帖
与我相关
我的任务
社区描述
高性能计算
社区管理员
  • 高性能计算社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧