Python编程语言中调用Matlab绘制保存数据的方案

在Python编程语言的应用的过程中,如果你想通过Python编程语言调用Matlab绘制保存数据,你可以参考我们以下的文章对其有一个详细的了解,以下是文章的的主要内容。望你能有所收获。

调用Matlab绘制保存数据

最近我做实验时需要把得到的数据用Matlab绘图并保存下来。一个小问题是原始的数据文件中不仅有数据还有一些注释的部分(注释部分在数据之前,每行以#开头)。直接用Matlab绘图比较麻烦,因为不能直接处理数据,所以或者要把数据单独提取出来,另存成一个文件。

或者就要用Matlab写一个过滤文本的程序。不过Matlab处理文本并不是它的强项。 所以这两个办法我都不很满意。Python再次给我提供了解决的方案。一方面Python编程语言具有很强的文本处理能力,另一方面Python对 Matlab这种交互式的程序提供了直接调用的的途径,所以写一个Python脚本来完成这一任务无疑是比较合适的。下面是实现的代码:

  1. import os  
  2. import string  
  3. 1filepath = "d:\\\\exp\\\\chgeff_lar_1" 
  4. 2filename="chgeff_lar_1" 
  5. 3id = open(filepath, 'r')  
  6. 4lines = fid.readlines()  
  7. 5fid.close()  
  8. 6x = []; y = []  
  9. 7for line in lines:  
  10. 8if line[0]=="#" or len(line)==1:  
  11. 9continue  
  12. 10else:  
  13. 11xval, yval = string.split(line)  
  14. 12x.append(float(xval))  
  15. 13y.append(float(yval))  
  16. 14id = open(filename+'.m', 'w')  
  17. 15fid.write("""  
  18. 16x = %s  
  19. 17y = %s  
  20. 18plot(x, y)  
  21. 19xlabel('Particle diameter (nm)')  
  22. 20ylabel('Charging efficiency')  
  23. 21print -deps  %s.eps  
  24. 22pause(10)  
  25. 23"""  %  (x, y, filename))  
  26. 24fid.write("exit")  
  27. 25fid.close()  
  28. 26cmd = "d:\\\\matlab6p5\\\\bin\\\\win32\\\\matlab.exe -nodesktop -r  " + filename  
  29. 27os.system(cmd)  

以上6-13句实现两个功能,一是过滤文本(8-9句),通过检查每一行的第一个字符及行的长度,把注释行和空行给去掉。二是把读到的每一行数据自动分配 到两个变量x,y中(10-13句)。然后Python把一组Matlab代码(16-24句)写到文件filename.m中。最后利用os模块的 system函数调用Matlab绘图及保存(26-27句)。从这个例子也可以看出,Python编程语言和其他语言协同工作的能力是比较强的。

posted @ 2012-01-06 12:27  jeffkuang  阅读(663)  评论(0编辑  收藏  举报