【元胞自动机】MATLAB界面聚合的元胞自动机模拟完整实现运行

文末有完整代码分享链接

文件介绍

automain 为元胞自动机主函数
choosedirection 选择方向函数,主函数调用
judgedirection 判断位置函数,主函数调用
neighbor 求每个元胞的邻居函数,主函数调用
surfaceness 求表面粗糙度
porosity 求孔隙率
flux 求水通量
intercept 求盐截留率
matrixplot 可视化图形

关键代码

while num<=98%tempmatrix = simulation;                  %定义新的矩阵变量暂时保存当前画面for i=1:rmfor j=1:rnswitch simulation(i,j)case -1                       %边界元胞,不作处理case 0                        %膜孔元胞,不作处理case 1                        %哌嗪元胞if ismember(simulation(i,j),grouppip{i,j})continue;elseif ismember(3,nextcell{i,j})        %若元胞上面邻居含有元胞3,则结合生成6direction=find(nextcell{i,j}==3);randindex=randperm(length(direction));resultindex=direction(randindex(1));             %假设水分子运动为布朗运动[swapi,swapj]=judgedirection(resultindex,i,j,rn);simulation(i,j)=6;                               %哌嗪位被PA替代simulation(swapi,swapj)=4;                          %TMC位被油相溶剂替代active(i,j)=2;  %假设pa只反应两次elseif ismember(0,nextcell{i,j}) || ismember(2,nextcell{i,j}) || ismember(4,nextcell{i,j})direction=union(find(nextcell{i,j}==0),union(find(nextcell{i,j}==2),find(nextcell{i,j}==4))); %寻找四个方向中含有元胞0,1,2,4的方向p_max=1;p_min=0.5;                              %概率变化范围if i<=m1    %若哌嗪在水相p_i=p_max-(i-1)*(p_max-p_min)/m1;resultindex=choosedirection(direction,2,p_i);%resultindex=2;elseif i>m1+m2 %若哌嗪在油相p_i=p_min+(i-m1-m2)*(p_max-p_min)/m3;resultindex=choosedirection(direction,1,p_i);else           %若哌嗪在界面中,等概率扩散%p_i=p_max-(i-1)*(p_max-p_min)/m1;resultindex=choosedirection(direction,2,1);%resultindex=2;end%由于界面聚合,水相哌嗪在界面处移动概率最小,两边概率最大,概率随着行数逐渐变化,依据概率选择最佳方向[swapi,swapj]=judgedirection(resultindex,i,j,rn);   %获得选定方向元胞的行列号if simulation(swapi,swapj)==0                    %如果扩散到膜孔,膜孔元胞置为哌嗪元胞,哌嗪元胞变成水分子元胞simulation(swapi,swapj)=1;simulation(i,j)=2;elseif simulation(swapi,swapj)==4if swapi<=m1+m2continue;elseif swapi>m1+m2+min(size(find(simulation==1)),size(find(simulation==3)))/n+1   %哌嗪只能活跃于油相的表层,该层为期望膜厚度continue;endelsetemp=simulation(i,j);                            %交换元胞状态simulation(i,j)=simulation(swapi,swapj);simulation(swapi,swapj)=temp;endelseif ismember(1,nextcell{i,j})   %若邻居有自身,则依玻尔兹曼因子可能形成团簇if rand>=w_pip && i>2 && i<rm-1 && j>2 && j<rn-1 %弹性碰撞direction=find(nextcell{i,j}==1);randindex=randperm(length(direction));resultindex=direction(randindex(1));             %假设水分子运动为布朗运动[swapi,swapj]=judgedirection(resultindex,i,j,rn);temp=simulation(2*i-swapi,2*j-swapj);                            %交换元胞状态simulation(2*i-swapi,2*j-swapj)=simulation(i,j);simulation(i,j)=temp;else             %形成团簇grouppip{i,j}=[simulation(i,j),simulation(swapi,swapj)];endendendcase 2                        %水分子元胞if ismember(0,nextcell{i,j})  %若水分子扩散到膜孔direction=find(nextcell{i,j}==0);randindex=randperm(length(direction));resultindex=direction(randindex(1));             %假设水分子运动为布朗运动[swapi,swapj]=judgedirection(resultindex,i,j,rn);if simulation(swapi,swapj)==0simulation(swapi,swapj)=2;endendcase 3                        %TMC元胞if ismember(simulation(i,j),groupTMC{i,j})continue;elseif ismember(1,nextcell{i,j})        %若元胞邻居含有元胞1,则结合生成6direction=find(nextcell{i,j}==1);randindex=randperm(length(direction));resultindex=direction(randindex(1));[swapi,swapj]=judgedirection(resultindex,i,j,rn);simulation(i,j)=4;simulation(swapi,swapj)=6; %哌嗪位被PA替代active(swapi,swapj)=2;elseif ismember(4,nextcell{i,j})direction=find(nextcell{i,j}==4);p_max=1;p_min=0.5;p_i=p_min+(i-m1-m2)*(p_max-p_min)/m3;%由于界面聚合,油相哌嗪要往界面去的概率更大,假设概率为0.7resultindex=choosedirection(direction,1,p_i);  %1表示向上,依据概率选择最佳方向[swapi,swapj]=judgedirection(resultindex,i,j,rn);if (simulation(swapi,swapj)==4 && swapi>m1+m2) || simulation(swapi,swapj)==3temp=simulation(i,j);simulation(i,j)=simulation(swapi,swapj);simulation(swapi,swapj)=temp;endelseif ismember(3,nextcell{i,j})if rand>=w_TMC && i>2 && i<rm-1 && j>2 && j<rn-1 %弹性碰撞direction=find(nextcell{i,j}==3);randindex=randperm(length(direction));resultindex=direction(randindex(1));             %假设水分子运动为布朗运动[swapi,swapj]=judgedirection(resultindex,i,j,rn);temp=simulation(2*i-swapi,2*j-swapj);                            %交换元胞状态simulation(2*i-swapi,2*j-swapj)=simulation(i,j);simulation(i,j)=temp;else             %形成团簇groupTMC{i,j}=[simulation(i,j),simulation(swapi,swapj)];endendendcase 4                        %HEX油相溶剂元胞case 5                        %基膜元胞case 6                        %PA元胞p1=0.4286;p2=0.5714;           %经计算,p1表示6和1反应再生成6的概率,p2表示6和3反应再生成6的概率if active(i,j)>0if ismember(1,nextcell{i,j}) && ismember(3,nextcell{i,j}) %如果周围仍然有单体flag=(p1*rand>p2*rand);if flag==1  %和1发生反应direction=find(nextcell{i,j}==1);randindex=randperm(length(direction));resultindex=randindex(1);[swapi,swapj]=judgedirection(resultindex,i,j,rn);simulation(swapi,swapj)=6;active(swapi,swapj)=1;active(i,j)=active(i,j)-1;else        %和3发生反应direction=find(nextcell{i,j}==3);resultindex=direction(1);[swapi,swapj]=judgedirection(resultindex,i,j,rn);simulation(swapi,swapj)=6;active(swapi,swapj)=1;active(i,j)=active(i,j)-1;endelseif ismember(1,nextcell{i,j}) || ismember(3,nextcell{i,j}) %若6既和1又和3相邻direction=union(find(nextcell{i,j}==1),find(nextcell{i,j}==3));resultindex=direction(1);[swapi,swapj]=judgedirection(resultindex,i,j,rn);simulation(swapi,swapj)=6;active(swapi,swapj)=1;active(i,j)=active(i,j)-1;endelsecontinue;endif i>m1+m2       %若生成的PA处于油相中,则应该以一定的规律附着在界面direction=[1 2 3 4];p_max=1;p_min=0.5;p_i=p_min+(i-m1-m2)*(p_max-p_min)/m3;resultindex=choosedirection(direction,1,p_i);[swapi,swapj]=judgedirection(resultindex,i,j,rn);temp=simulation(i,j);if simulation(swapi,swapj) ==0 || simulation(swapi,swapj)==5continue;elseif swapi<=m1+m2 && simulation(swapi,swapj)==3continue;elseif swapi>=m1-1 && simulation(swapi,swapj)==2continue;elsesimulation(i,j)=simulation(swapi,swapj);simulation(swapi,swapj)=temp;end%矩阵元素聚类elseif i<m1direction=[1 2 3 4];p_max=1;p_min=0.5;p_i=p_min-(i-m1)*(p_max-p_min)/m1;resultindex=choosedirection(direction,2,p_i);[swapi,swapj]=judgedirection(resultindex,i,j,rn);temp=simulation(i,j);if simulation(swapi,swapj) ==0 || simulation(swapi,swapj)==5continue;elseif swapi<=m1+m2 && simulation(swapi,swapj)==3continue;elseif swapi>=m1-1 && simulation(swapi,swapj)==2continue;elsesimulation(i,j)=simulation(swapi,swapj);simulation(swapi,swapj)=temp;endendendlist=neighbor(i,j,simulation);nextcell{i,j}=list;endend[row,col]=find(simulation==6); %PA的电荷效应len=length(row);for i=1:lenif row(i)>m1+m2active(row(i),col(i))=active(row(i),col(i))+1;elseif row(i)<m1active(row(i),col(i))=active(row(i),col(i))-1;endend

效果展示

分享链接:

M00198-MATLAB界面聚合的元胞自动机模拟完整实现运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/286332.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习作业二之KNN算法

KNN&#xff08;K- Nearest Neighbor&#xff09;法即K最邻近法&#xff0c;最初由 Cover和Hart于1968年提出&#xff0c;是一个理论上比较成熟的方法&#xff0c;也是最简单的机器学习算法之一。该方法的思路非常简单直观&#xff1a;如果一个样本在特征空间中的K个最相似&…

Arduino IDE工程代码多文件编程和中文设置

一、esp8266模块信息 二、中英文切换 点击文件( File )–选择首选项( Preference )—选择语言( Language )—选择中文–点击确定( OK ) 三、多文件编程 在Arduino编程中&#xff0c;将代码分割成多个文件是一种很好的做法&#xff0c;特别是项目变得越来越大和复杂时。这样…

【微服务】Eureka(服务注册,服务发现)

文章目录 1.基本介绍1.学前说明2.当前架构分析1.示意图2.问题分析 3.引出Eureka1.项目架构分析2.上图解读 2.创建单机版的Eureka1.创建 e-commerce-eureka-server-9001 子模块2.检查父子pom.xml1.子 pom.xml2.父 pom.xml 3.pom.xml 引入依赖4.application.yml 配置eureka服务5.…

【牛客】SQL142 对试卷得分做min-max归一化

描述 现有试卷信息表examination_info&#xff08;exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间&#xff09;&#xff1a; idexam_idtagdifficultydurationrelease_time19001SQLhard602020-01-01 10:00:0029002Chard802020-01-0…

huawei 华为 交换机 配置 LACP 模式的链路聚合示例 (交换机之间直连)

组网需求 如 图 3-22 所示&#xff0c; SwitchA 和 SwitchB 通过以太链路分别都连接 VLAN10 和 VLAN20 的网络&#xff0c;且SwitchA 和 SwitchB 之间有较大的数据流量。用户希望 SwitchA 和 SwitchB 之间能够提供较大的链路带宽来使相同VLAN 间互相通信。在两台 Switch 设备上…

【SpringBoot】实现一个简单的图片上传

前端上传表单 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <form enctype"multipart/form-data" method"post" action&q…

纯前端调用本机原生Office实现Web在线编辑Word/Excel/PPT,支持私有化部署

在日常协同办公过程中&#xff0c;一份文件可能需要多次重复修改才能确定&#xff0c;如果你发送给多个人修改后再汇总&#xff0c;这样既效率低又容易出错&#xff0c;这就用到网页版协同办公软件了&#xff0c;不仅方便文件流转还保证不会出错。 但是目前一些在线协同Office…

【考研数学】张宇最新全年学习包

考研数学冲高分必备&#xff0c;张宇老师肯定榜上有名&#xff01; 考研数学&#xff0c;其实就像一场没有硝烟的战斗。基础题是常规武器&#xff0c;中难题就是重型火炮&#xff0c;而压轴题呢&#xff0c;那就是核弹级别的存在&#xff01;考研的战场&#xff0c;关键就在那…

Vulnhub:DR4G0N B4LL: 1

目录 信息收集 1、arp 2、nmap WEB web信息收集 gobuster 隐藏目录发现 图片隐写 ssh登录 提权 get user 系统信息收集 get root 信息收集 1、arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l …

iOS - Runtime-isa详解(位域、union(共用体)、位运算)

文章目录 iOS - Runtime-isa详解&#xff08;位域、union&#xff08;共用体&#xff09;、位运算&#xff09;前言1. 位域介绍1.1 思路1.2 示例 - 结构体1.3 示例 - union&#xff08;共用体&#xff09;1.3.1 说明 1.4 结构体 对比 union&#xff08;共用体&#xff09; 2. a…

Github多账号共存

在开发阶段&#xff0c;如果同时拥有多个开源代码托管平台的账户&#xff0c;在代码的管理上非常麻烦。那么&#xff0c;如果同一台机器上需要配置多个账户&#xff0c;怎样才能确保不冲突&#xff0c;不同账户独立下载独立提交呢&#xff1f; 我们以两个github账号进行演示 …

LiteFlow简单使用

LiteFlow是什么 LiteFlow是一个非常强大的现代化的规则引擎框架&#xff0c;融合了编排特性和规则引擎的所有特性&#xff0c;具体介绍查看官网 官网&#xff1a;https://liteflow.cc/ github: https://github.com/dromara/liteflow gitee: https://gitee.com/dromara/lite…

网络七层模型:理解网络通信的架构(〇)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

生物信息—数据库

文章目录 核酸数据库1 一级核酸数据库&#xff1a;GenBank1.1 原核生物核酸序列1.2 真核生物成熟mRNA1.3 真核生物DNA序列 2 一级核酸数据库&#xff1a;基因组数据库&#xff1a;Ensemble3 一级核酸数据库&#xff1a;微生物宏基因组数据库&#xff1a;JCVI4 二级核酸数据库 蛋…

数据可视化基础与应用-04-seaborn库从入门到精通01-02

总结 本系列是数据可视化基础与应用的第04篇seaborn&#xff0c;是seaborn从入门到精通系列第1-2篇。本系列的目的是可以完整的完成seaborn从入门到精通。主要介绍基于seaborn实现数据可视化。 参考 参考:数据可视化-seaborn seaborn从入门到精通01-seaborn介绍与load_datas…

【AI科学小品文】AI之梦:未来探索之旅

引子&#xff1a;AI初识 在未来的某个城市&#xff0c;高耸的摩天大楼间&#xff0c;闪烁着无数LED屏幕的广告牌&#xff0c;在黄昏的余晖中显得格外耀眼。无人驾驶的磁悬浮车辆穿梭在街道上&#xff0c;几乎听不到任何声音。智能机器人在街头忙碌着&#xff0c;为行人提供着各…

数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting

模型融合&#xff1a;通过融合多个不同的模型&#xff0c;可能提升机器学习的性能。这一方法在各种机器学习比赛中广泛应用&#xff0c; 也是在比赛的攻坚时刻冲刺Top的关键。而融合模型往往又可以从模型结果&#xff0c;模型自身&#xff0c;样本集等不同的角度进行融合。 数据…

Unity 视频组件 VideoPlayer

组件添加&#xff1a; 在自己定义的组件下&#xff08;例如&#xff1a;Panel&#xff09; 点击 Inspector 面板中的 AddComponent &#xff0c;输入“VideoPlayer”。 资源 这里 视频资源有两种形式&#xff0c;第一种是 VideoClip &#xff0c;需要将视频文件拖拽到该属性字段…

【Linux中vim系列】如何在vim中检索字符串

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

重构销售话术和知识库,容联云找到了大模型的“钉子”

科技云报道原创。 从ChatGPT诞生起&#xff0c;大模型在营销、客服等场景的落地就被予以众望。然而在经历了一年多的“百模大战”洗礼之后&#xff0c;人们发现无论是算力成本还是内容生成的安全合规问题&#xff0c;都让大模型很难直接应用于机器与人对话的实际业务中。 这其…