此文章主要是介紹用Python編程語言如何調(diào)用Matlab繪制保存數(shù)據(jù),以及其相關(guān)的代碼的詳細(xì)介紹。以下是文章的主要內(nèi)容。
在Python編程語言的應(yīng)用的過程中,如果你想通過Python編程語言調(diào)用Matlab繪制保存數(shù)據(jù),你可以參考我們以下的文章對其有一個(gè)詳細(xì)的了解,以下是文章的的主要內(nèi)容。望你能有所收獲。
調(diào)用Matlab繪制保存數(shù)據(jù)
最近我做實(shí)驗(yàn)時(shí)需要把得到的數(shù)據(jù)用Matlab繪圖并保存下來。一個(gè)小問題是原始的數(shù)據(jù)文件中不僅有數(shù)據(jù)還有一些注釋的部分(注釋部分在數(shù)據(jù)之前,每行以#開頭)。直接用Matlab繪圖比較麻煩,因?yàn)椴荒苤苯犹幚頂?shù)據(jù),所以或者要把數(shù)據(jù)單獨(dú)提取出來,另存成一個(gè)文件。
或者就要用Matlab寫一個(gè)過濾文本的程序。不過Matlab處理文本并不是它的強(qiáng)項(xiàng)。 所以這兩個(gè)辦法我都不很滿意。Python再次給我提供了解決的方案。一方面Python編程語言具有很強(qiáng)的文本處理能力,另一方面Python對Matlab這種交互式的程序提供了直接調(diào)用的的途徑,所以寫一個(gè)Python腳本來完成這一任務(wù)無疑是比較合適的。下面是實(shí)現(xiàn)的代碼:
- import os
- import string
- 1filepath = "d:\\\\exp\\\\chgeff_lar_1"
- 2filename="chgeff_lar_1"
- 3id = open(filepath, 'r')
- 4lines = fid.readlines()
- 5fid.close()
- 6x = []; y = []
- 7for line in lines:
- 8if line[0]=="#" or len(line)==1:
- 9continue
- 10else:
- 11xval, yval = string.split(line)
- 12x.append(float(xval))
- 13y.append(float(yval))
- 14id = open(filename+'.m', 'w')
- 15fid.write("""
- 16x = %s
- 17y = %s
- 18plot(x, y)
- 19xlabel('Particle diameter (nm)')
- 20ylabel('Charging efficiency')
- 21print -deps %s.eps
- 22pause(10)
- 23""" % (x, y, filename))
- 24fid.write("exit")
- 25fid.close()
- 26cmd = "d:\\\\matlab6p5\\\\bin\\\\win32\\\\matlab.exe -nodesktop -r " + filename
- 27os.system(cmd)
|
以上6-13句實(shí)現(xiàn)兩個(gè)功能,一是過濾文本(8-9句),通過檢查每一行的第一個(gè)字符及行的長度,把注釋行和空行給去掉。二是把讀到的每一行數(shù)據(jù)自動(dòng)分配到兩個(gè)變量x,y中(10-13句)。然后Python把一組Matlab代碼(16-24句)寫到文件filename.m中。最后利用os模塊的system函數(shù)調(diào)用Matlab繪圖及保存(26-27句)。從這個(gè)例子也可以看出,Python編程語言和其他語言協(xié)同工作的能力是比較強(qiáng)的。
【編輯推薦】
- Python正則表達(dá)式十種相關(guān)的匹配方法
- Python字符串替換如何才能進(jìn)行字符的拆分
- Python文本亂碼發(fā)生時(shí)的解決方案
- Python編程語言總體性能優(yōu)點(diǎn)評測
- Python編程語言具有相當(dāng)高的適應(yīng)能力