24小时热门版块排行榜    

查看: 1241  |  回复: 5

wangyongjian

金虫 (初入文坛)

[求助] 一段MATLAB代码向量化

各位大神好,小弟在进行元胞自动机相关工作时候,觉得目前代码速度太慢。想将其向量化,下面这段想了好久还是不得其解。
首先,不知道能不能向量化?
第二,如果能,不知道怎么办?
所以再次求助各位路过的大神,将下列代码向量化!矩阵S见附件,为方便各位大神,附件code是下面代码的整洁版。
kk=500;    % 定义循环次数
N=size(S,1);
epss=0.0001;
for k=1:kk;   
     
    S2=S([end 1:end-1],  ;  % S 上近邻矩阵
    S8=S([2:end 1],;        % S 下近邻矩阵
    S4=S(:,[end 1:end-1]);    % S 左近邻矩阵
    S6=S(:,[2:end 1])  ;      % S 右近邻矩阵
    S1=S2(:,[end 1:end-1]);   % S 左上近邻矩阵
    S3=S2(:,[2:end 1]);       % S 右上近邻矩阵
    S7=S8(:,[end 1:end-1]);   % S 左下近邻矩阵
    S9=S8(:,[2:end 1]);       % S 右下近邻矩阵

    Va1=zeros(N,N);   %预分配矩阵
    DE=zeros(N,N);   %预分配矩阵
    P2=zeros(N,N);   %预分配矩阵

   for m=1:N;
      for n=1:N;
         Va=[S1(m,n),S2(m,n),S3(m,n),S4(m,n),S6(m,n),S7(m,n),S8(m,n),S9(m,n)];
             B=(sum(abs(S(m,n)-Va))<epss);  
               
               La=find(Va<=0);
               Lb=find(Va>0);  
         if  S(m,n)>0   
             E0=0.4*(length(Lb)-sum(abs(S(m,n)-Va(Lb))<epss));
             index=round(1+7.*rand);  %定义索引指数
             Va1(m,n)=Va(index);   %抽取的邻居
             if   (Va1(m,n)>0 )    %必须找到非0的邻居来转变
               E1=0.4*(length(Lb)-sum(abs(Va(index)-Va(Lb))<epss));%转变后元素的状态
                DE(m,n)=E1-E0;     %计算转变前后的状态值之差
                P2(m,n)=1.*(DE(m,n)<=0);  %计算转变概率
             end
         end
      end
   end
      R2=rand(N,N);    % 生成随机数与P1来比较
      C0=(R2<P2);     % C0=1表示元胞转变成功,C0=0表示元胞转变不成功
      S0 =S;     % 记录当前状态,
    %////// 按规则的优先级由低到高执行2个规则
    S =S0.*(1-C0)+ C0.*Va1;    % 规则2,选取降幅最大的元胞转变
    S((B>0.5))=S0((B>0.5));    % 规则1,不转变
    SA=S;   %把矩阵保存在另一个数组里,用作显示矩阵
  
     for m=1:N-1    % 对矩阵里面的所有元胞扫描
        for n=1:N-1  % 对矩阵里面的所有元胞扫描
            if((SA(m,n)>=1 && SA(m,n+1)>=1 && SA(m,n)~=SA(m,n+1))) %如果左右相邻的元胞不相等
                SA(m,n)=0; % 将元胞显示状态值置为0     
              % SA(m,n+1)=0; %将元胞右邻居显示状态值置为0
            end;
            if((SA(m,n)>=1 && SA(m+1,n)>=1 && SA(m,n)~=SA(m+1,n))) %如果上下相邻的元胞不相等
               SA(m,n)=0;    % 将元胞显示状态值置为0   
              % SA(m+1,n)=0;  %将元胞下邻居显示状态值置为0
            end;
        end;
    end;            
end
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : Code.m
  • 2015-12-28 18:52:19, 2.23 K
  • 附件 2 : S.mat
  • 2015-12-28 18:52:19, 7.91 K

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

混不好我就不回来了
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

wangyongjian

金虫 (初入文坛)

自己顶一下
混不好我就不回来了
2楼2015-12-28 22:02:34
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

wangyongjian

金虫 (初入文坛)

不要沉不要沉
混不好我就不回来了
3楼2015-12-29 11:45:11
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

tk凌峰人

银虫 (著名写手)

不要沉入海底

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

宁静致远
4楼2015-12-29 12:14:56
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

wangyongjian

金虫 (初入文坛)

再顶一下。不要沉。
混不好我就不回来了
5楼2015-12-30 10:13:49
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

wangyongjian

金虫 (初入文坛)

送红花一朵
引用回帖:
4楼: Originally posted by tk凌峰人 at 2015-12-29 12:14:56
不要沉入海底

6楼2015-12-30 15:07:23
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangyongjian 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 287求调剂 +4 晨昏线与星海 2026-03-19 5/250 2026-03-20 16:42 by Iveryant
[考研] 265求调剂 +8 梁梁校校 2026-03-17 8/400 2026-03-20 14:40 by 27道科特
[考研] 本人考085602 化学工程 专硕 +18 不知道叫什么! 2026-03-15 20/1000 2026-03-20 13:52 by danney002
[考研] 274求调剂 +8 S.H1 2026-03-18 8/400 2026-03-20 11:53 by 学员8dgXkO
[考研] 290求调剂 +4 ^O^乜 2026-03-19 4/200 2026-03-20 11:51 by 学员8dgXkO
[考研] 266求调剂 +5 阳阳哇塞 2026-03-14 10/500 2026-03-19 15:08 by 阳阳哇塞
[考研] 求调剂,一志愿:南京航空航天大学大学 ,080500材料科学与工程学硕,总分289分 +3 @taotao 2026-03-19 3/150 2026-03-19 14:07 by peike
[考研] 0703化学调剂 +5 pupcoco 2026-03-17 8/400 2026-03-19 13:58 by houyaoxu
[考研] 330求调剂 +3 小材化本科 2026-03-18 3/150 2026-03-18 21:55 by 无懈可击111
[考研] 328求调剂,英语六级551,有科研经历 +3 生物工程调剂 2026-03-17 7/350 2026-03-18 20:41 by Wangjingyue
[考研] 08工科 320总分 求调剂 +5 梨花珞晚风 2026-03-17 5/250 2026-03-18 14:49 by haxia
[考研] 301求调剂 +4 A_JiXing 2026-03-16 4/200 2026-03-17 17:32 by ruiyingmiao
[考研] 290求调剂 +3 p asserby. 2026-03-15 4/200 2026-03-17 16:35 by wangkm
[考研] 材料与化工专硕调剂 +5 heming3743 2026-03-16 5/250 2026-03-17 14:03 by 勇敢太监王公公
[考研] 302求调剂 +4 小贾同学123 2026-03-15 8/400 2026-03-17 10:33 by 小贾同学123
[考研] 11408 一志愿西电,277分求调剂 +3 zhouzhen654 2026-03-16 3/150 2026-03-17 07:03 by laoshidan
[考研] 东南大学364求调剂 +5 JasonYuiui 2026-03-15 5/250 2026-03-16 21:28 by 木瓜膏
[基金申请] 今年的国基金是打分制吗? 50+3 zhanghaozhu 2026-03-14 3/150 2026-03-16 17:07 by 北京莱茵润色
[考研] 一志愿211 0703方向310分求调剂 +3 努力奋斗112 2026-03-15 3/150 2026-03-16 16:44 by houyaoxu
[考研] 26考研一志愿中国石油大学(华东)305分求调剂 +3 嘉年新程 2026-03-15 3/150 2026-03-15 13:58 by 哈哈哈哈嘿嘿嘿
信息提示
请填处理意见