zoukankan      html  css  js  c++  java
  • 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编程语言和其他语言协同工作的能力是比较强的。

  • 相关阅读:
    Median Value
    237. Delete Node in a Linked List
    206. Reverse Linked List
    160. Intersection of Two Linked Lists
    83. Remove Duplicates from Sorted List
    21. Merge Two Sorted Lists
    477. Total Hamming Distance
    421. Maximum XOR of Two Numbers in an Array
    397. Integer Replacement
    318. Maximum Product of Word Lengths
  • 原文地址:https://www.cnblogs.com/jeffkuang/p/2314256.html
Copyright © 2011-2022 走看看