MATLAB中讀取化學分子式各元素係數

2021-10-02 14:42:14 字數 1734 閱讀 7346

使用matlab自動化讀取化學分子式各元素係數,可以有效提公升效率,總的來說,該項任務主要有以下兩個步驟:

1、找到字串中各個元素;

2、讀取該元素之後的數字。

在第1步中,非常簡單,直接strfind函式就能找到某個元素,但是第2步包含諸多種情況:

元素之後無係數,表示係數為1;

元素之後無係數且位於字串末尾,此時係數也為1;

元素之後係數大於9,表示係數為多位數字。

根據以上諸多種情況,下面**將一一做出注釋:

function  coef =

find_each_coef

(str)

%指定要尋找的所有元素

elements =

'chnosp'

;%初始化係數向量

coef =

zeros(1

,6);

for i =1:

6 ind =

strfind

(str,

elements

(i));if

~isempty

(ind)

%如果找到的該元素位於末尾,係數為1

if ind ==

length

(str)

coef

(i)=1;

else

%否則提取該元素之後的所有字元

s =str(ind+

1:end)

;%如果該元素之後的所有字元不包含字母,直接轉換成係數

if~isnan

(str2double

(s))

coef

(i)=

str2double

(s);

%如果該元素之後僅包含乙個元素,係數為1

elseif length

(s)==

1coef

(i)=1;

%如果該元素之後緊接著另乙個元素,係數為1

elseif ~(s

(1)>=

'0'&&s(

1)<=

'9')

coef

(i)=1;

else

%以上都不是,提取該元素後所有數字,即為係數

count =1;

while

s(count)

>=

'0'&&

s(count)

<=

'9' count = count +1;

endcoef

(i)=

str2double(s

(1:count-1)

);end

endend

endend

以上**實測能很好的實現係數提取的功能,但是存在以下缺點:

1、沒有考慮兩個字母的元素,如ca等,因為任務中沒有遇到,所以就沒考慮。想要改進的話,可以從兩個方向改進:

將兩個字母的元素替換為某個符號,這種方法改動最小,但是效率可能不高;

在搜尋及後續提取係數時考慮兩個字母的元素,這將帶來很大的改動。

2、沒有考慮係數為小數的分子式,這點也很好改。

以上就是該任務的全部內容,總的來說,這種任務比較少見,不是部署到大規模應用上我們怎麼方便怎麼來,也為以後處理字串提供乙個參考。

MATLAB讀取txt中資料

fileid fopen filename fileid fopen filename,permission fileid fopen filename,permission,machineformat fileid fopen filename,permission,machineformat,e...

MATLAB讀取excel檔案中的資料

matlab讀取excel中的資料 讀取sheet1中的資料 num返回的是excel中的資料,txt輸出的是文字內容,raw輸出的是未處理資料 一般情況下,我們讀取的是excel中的資料,所以可以直接用下面的,只輸出資料矩陣便可 eg data,text xlsread h 張教師研究專案 不同波...

matlab 讀取 分層影象

a imread pepper.bmp 讀入 bmp檔案 g rgb2gray a g 為原始bmp圖案的grayscale版本 h,w size g 讀入g的高和寬 bitplane zeros h,w,8 建立8層空plane,分別儲存1 8個分層 subplot 3,3,1 畫在九宮格的第1個...