声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1938|回复: 1

[共享资源] 生命游戏置乱算法的MATLAB实现

[复制链接]
发表于 2006-11-13 10:45 | 显示全部楼层 |阅读模式

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

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

x
生命游戏置乱算法的MATLAB实现,用于置乱图像

  1. function f=Lifegame(x,t)

  2. [x_r x_c n]=size(x);
  3. orgData=x;%每次叠代的初始数据
  4. resData=zeros(x_r,x_c);%每次叠代的结果数据
  5. tempData=zeros(x_r,x_c);%记录曾经存活过的点,即已被取走的点
  6. vex=zeros(1,x_r*x_c);%返回的存有置换位置的向量
  7. point=1;%向量当前位置指针
  8. times=t;%times记录迭代次数

  9. for time=1:times
  10.     for nRows=2:x_r-1
  11.         for nCols=2:x_c-1
  12. %计算每一个细胞周围的活的细胞数
  13.             nCount=orgData(nRows-1,nCols-1)+orgData(nRows-1,nCols)...
  14.                 +orgData(nRows-1,nCols+1)+orgData(nRows,nCols-1)...
  15.                 +orgData(nRows,nCols+1)+orgData(nRows+1,nCols-1)...
  16.                 +orgData(nRows+1,nCols)+orgData(nRows+1,nCols+1);
  17.             switch(nCount)
  18.                 case 3
  19.                     resData(nRows,nCols)=1;%周围有3个活细胞,该细胞为生,赋1
  20.                 case 2
  21.                     resData(nRows,nCols)=orgData(nRows,nCols);%周围有2个活细胞,该细胞不变
  22.                 otherwise
  23.                     resData(nRows,nCols)=0;%其它情况下,细胞为死,赋0
  24.             end
  25.         end
  26.     end
  27. %将新产生的活细胞对应的点取走,并更新tempData中的数据
  28.     for ii=1:x_r
  29.         for jj=1:x_c
  30.             if resData(ii,jj)==1 & tempData(ii,jj)==0
  31.                 vex(1,point)=(ii-1)*x_c+jj;
  32.                 point=point+1;
  33.                 tempData(ii,jj)=1;
  34.             end
  35.         end
  36.     end
  37.    
  38.     orgData=resData;%每次叠代的结果作为下次叠代的输入
  39. end
  40. %将一直未曾活过的细胞取走
  41. for ii=1:x_r
  42.     for jj=1:x_c
  43.         if tempData(ii,jj)==0
  44.             vex(1,point)=(ii-1)*x_c+jj;
  45.             point=point+1;
  46.         end
  47.     end
  48. end
  49. %返回结果向量
  50. f=vex;
复制代码
回复
分享到:

使用道具 举报

发表于 2006-11-13 21:09 | 显示全部楼层
不错,顶一下
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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