基於MATLAB的分子相互作用的表徵模型
分子在永不停息地作無規則運動。擴散現象是分子作無規則運動的例證。所謂擴散是指兩種不同的物質相互接觸時,彼此進入對方的現象。分子之間既有引力,又有斥力。固體能保持一定的形狀和體積且難以拉斷,說明分子之間存在引力,而固體和液體分子間保持一定的間隙且很難被壓縮,說明分子間又存在斥力。物質內分子間引力和斥力是同時存在的,引力和斥力都隨分子間距離的增大而減小,斥力減小得更快。當分子間距為某一定值r0時,引力等於斥力,此時分子處於平衡位置;當分子間距大於r0時,引力起主要作用;當分子間距小於r0時,斥力起主要作用。若分子間距大於分子直徑的10倍時,分子間作用力變得十分微弱,可以認為此時分子間作用力為零。
MATLAB是一種面向科學與工程計算的高階語言,它集科學計算、自動控制、訊號處理、神經網路和影像處理等學科的處理功能於一體,具有極高的程式設計效率。MATLAB是一個高度整合的系統,MATLAB提供的Simulink是一個用來對動態系統進行建模、模擬和分析的軟體包,它支援線性和非線性系統,能夠在連續時間域、離散時間域或者兩者的混合時間域裡進行建模,它同樣支援具有多種取樣速率的系統。在過去幾年裡,Simulink已經成為數學和工業應用中對動態系統進行建模時使用得最為廣泛的軟體包。
3.2 分子函式的設計
在本例中,我們要通過輸入的座標值,來顯示分子的位置,所以我們首先來設計分子函式。其MATLAB程式碼如下所示:
x=linspace(x1,x2,Mx);
y=linspace(y1,y2,My);
z=linspace(z1,z2,Mz);
load pot.out;
data=pot(1:220881);
va=reshape(data,My,Mx,Mz);
load FF.out;
data1=FF(1:220881);
w=reshape(data1,My,Mx,Mz);
p = patch(isosurface(x, y, z, va,-0.36073643,w));
isonormals(x,y,z,va, p)
set(p, 'FaceColor', 'interp', 'EdgeColor', 'none');
hidden on
daspect([1 1 1])
view(3)
lighting phong
hsurf=isosurface(x, y, z, va,-0.3566);
vertices=hsurf.vertices(:,:);
save vertice.txt vertices -ascii;
faces=hsurf.faces(:,:);
save face.txt faces -ascii ;
·linspace
x=linspace(a1,a2,a3);a1為第一個元素,a2為最末一個元素,a3表示x共有a3個元素,每個元素間距相等。
·load
載入外部資料。
·reshape
可以對陣列進行重組變形, Y = reshape(X,m,n) 前提條件 Y與X中所含的元素個數必須相等。則上述命令將X轉為 m*n的矩陣。
·isosurface
形成的曲面的點集
那麼,我們可以得到如下的模擬結果。
3.3 分子定位設計
本模組,我們主要設計這麼一個功能,輸入x,y,z座標值,然後在相應的位置顯示分子。在本章3.2,我們已經設計了分子函式,下面我們主要通過輸入座標值來顯示分子。其設計程式碼如下所示:
其頂層程式碼為:
clc;
clear;
close all;
NUM=input('請輸入的要顯示的分子的個數');
for i=1:NUM
x1=input('請輸入分子X軸的座標上限MIN\n');
x2=input('請輸入分子X軸的座標下限MAX\n');
y1=input('請輸入分子Y軸的座標上限MIN\n');
y2=input('請輸入分子Y軸的座標下限MAX\n');
z1=input('請輸入分子Z軸的座標上限MIN\n');
z2=input('請輸入分子Z軸的座標下限MAX\n');
fenzi(x1,x2,y1,y2,z1,z2);
hold on;
end
為了使系統的顯示效果根據的明顯,我們修改分子函式。
……………………………………
%(x1,y1,z1)UP
hndl=plot3(x1,y1,z1);
set(hndl,'markersize',30,'marker','.','color','k');
A=text(x1,y1,z1,'A');
set(A,'fontsize',18,'color','k');
hold on
%(x1,y2,z1)UP
hndl=plot3(x1,y2,z1);
set(hndl,'markersize',30,'marker','.','color','k');
B=text(x1,y2,z1,'B');
set(B,'fontsize',18,'color','k');
hold on
%(x2,y1,z1)UP
hndl=plot3(x2,y1,z1);
set(hndl,'markersize',30,'marker','.','color','k');
C=text(x2,y1,z1,'C');
set(C,'fontsize',18,'color','k');
hold on
%(x2,y2,z1)UP
hndl=plot3(x2,y2,z1);
set(hndl,'markersize',30,'marker','.','color','k');
D=text(x2,y2,z1,'D');
set(D,'fontsize',18,'color','k');
hold on
%(x1,y1,z1)DOWN
hndl=plot3(x1,y1,z2);
set(hndl,'markersize',30,'marker','.','color','k');
E=text(x1,y1,z2,'E');
set(E,'fontsize',18,'color','k');
hold on
%(x1,y2,z2)DOWN
hndl=plot3(x1,y2,z2);
set(hndl,'markersize',30,'marker','.','color','k');
F=text(x1,y2,z2,'F');
set(F,'fontsize',18,'color','k');
hold on
%(x2,y1,z2)DOWN
hndl=plot3(x2,y1,z2);
set(hndl,'markersize',30,'marker','.','color','k');
G=text(x2,y1,z2,'G');
set(G,'fontsize',18,'color','k');
hold on
%(x2,y2,z2)DOWN
hndl=plot3(x2,y2,z2);
set(hndl,'markersize',30,'marker','.','color','k');
H=text(x2,y2,z2,'H');
set(H,'fontsize',18,'color','k');
hold on
lx2=[x1 x2];ly2=[y1 y1];lz2=[z1 z1];
BL2=plot3(lx2,ly2,lz2,'b');
set(BL2,'linewidth',1);
hold on
lx4=[x1 x2];ly4=[y2 y2];lz4=[z1 z1];
BL4=plot3(lx4,ly4,lz4,'b');
set(BL4,'linewidth',1);
hold on
lx8=[x1 x2];ly8=[y2 y2];lz8=[z2 z2];
BL8=plot3(lx8,ly8,lz8,'b');
set(BL8,'linewidth',1);
hold on
lx11=[x1 x2];ly11=[y1 y1];lz11=[z2 z2];
BL11=plot3(lx11,ly11,lz11,'b');
set(BL11,'linewidth',1);
hold on
lx1=[x1 x1];ly1=[y1 y2];lz1=[z1 z1];
BL1=plot3(lx1,ly1,lz1,'b');
set(BL1,'linewidth',1);
hold on
lx7=[x2 x2];ly7=[y1 y2];lz7=[z1 z1];
BL7=plot3(lx7,ly7,lz7,'b');
set(BL7,'linewidth',1);
hold on
lx9=[x2 x2];ly9=[y1 y2];lz9=[z2 z2];
BL9=plot3(lx9,ly9,lz9,'b');
set(BL9,'linewidth',1);
hold on
lx12=[x1 x1];ly12=[y1 y2];lz12=[z2 z2];
BL12=plot3(lx12,ly12,lz12,'b');
set(BL12,'linewidth',1);
hold on
lx3=[x1 x1];ly3=[y1 y1];lz3=[z1 z2];
BL3=plot3(lx3,ly3,lz3,'b');
set(BL3,'linewidth',1);
hold on
lx5=[x1 x1];ly5=[y2 y2];lz5=[z1 z2];
BL5=plot3(lx5,ly5,lz5,'b');
set(BL5,'linewidth',1);
hold on
lx6=[x2 x2];ly6=[y2 y2];lz6=[z1 z2];
BL6=plot3(lx6,ly6,lz6,'b');
set(BL6,'linewidth',1);
hold on
lx10=[x2 x2];ly10=[y1 y1];lz10=[z1 z2];
BL10=plot3(lx10,ly10,lz10,'b');
set(BL10,'linewidth',1);
hold on
我們對系統進行模擬,可以得到如下的結果。
·輸入一個分鐘的情況
圖3-2 分子位置顯示
·輸入二個分鐘的情況
圖3-2 多個分子的位置顯示模擬效果圖
相關文章
- 分子100%有效,從頭設計配體,湖南大學提出基於片段的分子表徵框架框架
- 基於bert架構的精準知識表徵模型架構模型
- 分子表徵從「圖」到「影片」,1.2億幀、200萬分子,湖大分子影片基礎模型登Nature子刊模型
- AlphaFold 3:可預測生命分子的結構和相互作用
- 可對藥物分子進行表徵的幾何深度學習深度學習
- 基於MATLAB的水果分級設計Matlab
- RDKit | BCUT:基於分子圖結構的二維描述符
- 基於MATLAB公式識別Matlab公式
- 基於matlab的車牌識別(含子程式)Matlab
- 通訊原理:基於MATLAB的AM調幅分析Matlab
- 基於BP神經網路的苦瓜生長含水量預測模型matlab模擬神經網路模型Matlab
- 基於EM期望最大化演算法的GMM模型引數估計matlab模擬演算法模型Matlab
- 模型的威力:基於模型,快速梳理原始碼模型原始碼
- 基於Python的Xgboost模型實現Python模型
- 基於python的事件處理模型Python事件模型
- 基於ESTAR指數平滑轉換自迴歸模型的CPI資料統計分析matlab模擬模型Matlab
- Struct2Graph:基於結構的蛋白質-蛋白質相互作用預測的圖注意網路Struct
- MATLAB——基於影像相減的紙牌識別系統Matlab
- 計算效率提升100倍以上,上交李金金團隊開發基於Transformer的大模型用於從頭算分子動力學ORM大模型
- 基於PaddlePaddle的官方NLP模型總覽模型
- XLM — 基於BERT的跨語言模型模型
- 基於序列模型的隨機取樣模型隨機
- 基於LSTM模型的智慧選股策略模型
- 基於AMC4030的二維滑軌的MATLAB程式設計控制Matlab程式設計
- 基於Matlab Coder將matlab程式碼轉換成c程式碼MatlabC程式
- 基於Matlab的車牌識別系統(帶介面、模板庫)Matlab
- 基於GSP工具箱的NILM演算法matlab模擬演算法Matlab
- 基於免疫演算法的TSP問題求解matlab模擬演算法Matlab
- 基於最小二乘法的太陽黑子活動模型引數辨識和預測matlab模擬模型Matlab
- 基於TimeLine模型的訊息同步機制模型
- 基於WebGL/Threejs技術的模型剖切WebJS模型
- 聊聊基於Alink庫的隨機森林模型隨機森林模型
- 基於RBAC的許可權設計模型模型
- 基於MATLAB的指紋識別演算法模擬實現Matlab演算法
- 基於支援向量機的影像分類系統(MATLAB GUI介面版)MatlabGUI
- 基於粒子群演算法的分組揹包MATLAB實現演算法Matlab
- 基於BP神經網路的金融序列預測matlab模擬神經網路Matlab
- 基於自編碼器的表徵學習:如何攻克半監督和無監督學習?