在Python編程語言的應用的過程中,如果你想通過Python編程語言調用Matlab繪制保存數據,你可以參考我們以下的文章對其有一個詳細的了解,以下是文章的的主要內容。望你能有所收獲。
調用Matlab繪制保存數據
最近我做實驗時需要把得到的數據用Matlab繪圖并保存下來。一個小問題是原始的數據文件中不僅有數據還有一些注釋的部分(注釋部分在數據之前,每行以#開頭)。直接用Matlab繪圖比較麻煩,因為不能直接處理數據,所以或者要把數據單獨提取出來,另存成一個文件。
或者就要用Matlab寫一個過濾文本的程序。不過Matlab處理文本并不是它的強項。 所以這兩個辦法我都不很滿意。Python再次給我提供了解決的方案。一方面Python編程語言具有很強的文本處理能力,另一方面Python對Matlab這種交互式的程序提供了直接調用的的途徑,所以寫一個Python腳本來完成這一任務無疑是比較合適的。下面是實現的代碼:
- 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句實現兩個功能,一是過濾文本(8-9句),通過檢查每一行的第一個字符及行的長度,把注釋行和空行給去掉。二是把讀到的每一行數據自動分配到兩個變量x,y中(10-13句)。然后Python把一組Matlab代碼(16-24句)寫到文件filename.m中。最后利用os模塊的system函數調用Matlab繪圖及保存(26-27句)。從這個例子也可以看出,Python編程語言和其他語言協同工作的能力是比較強的。
【編輯推薦】
- Python正則表達式十種相關的匹配方法
- Python字符串替換如何才能進行字符的拆分
- Python文本亂碼發生時的解決方案
- Python編程語言總體性能優點評測
- Python編程語言具有相當高的適應能力