找回密码
 注册
关于网站域名变更的通知
查看: 503|回复: 1
打印 上一主题 下一主题

python读取Matlab的.mat数据

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-4-16 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
' U" K3 h- e4 T/ ^- D+ Y! A/ D) p) V; d5 h
鉴于以后的目标主要是利用现有的Matlab数据(.mat或者.txt),主要考虑python导入Matlab数据的问题。以下代码可以解决python读取.mat文件的问题。主要使用sicpy.io即可。sicpy.io提供了两个函数loadmat和savemat,非常方便。! o' }4 x# S: @- ~
# adapted from( L/ a; f- ~$ ~. f7 H, o
import scipy.io as sio  ( v" R+ ]# }/ }( W* a
#import matplotlib.pyplot as plt" G; _* c7 F) X( g7 O$ h* S
from pylab import *& ?  n1 E0 \( q! p. q
import numpy as np  
4 k& T& l& c6 _. s  
# z0 H  K. B6 o. Y4 `matfn='E:\Pythonrun\myuse\matdata.mat'   # the path of .mat data4 y% @! P& y! Q- S6 Y
data=sio.loadmat(matfn)  
$ E8 t2 e4 c6 C; n" y$ z  4 A6 f# V  T4 [1 G( ]( s% i
xx=data['matdata']
$ l5 u+ R# O  D) I  r5 qfigure(1): ~, W1 y: f* [3 ^; J0 ~
plot(xx)
7 d2 |8 g: Q# \7 n  c  vshow(). U; t4 A% g4 g

. q5 I' G. [+ H以下代码是读入txt数据并转换成数组,方法比较笨,更有效的方法待研究。
0 T0 v: @! a2 D( N- ~7 n, l4 A& E8 A) cfrom numpy import *8 v9 q& l+ w: M8 b
: N* @9 L! a9 {4 z0 s
def file2list(filename):  
  ^8 I+ }: f: ~: V: z( q0 H    fr = open(filename)  
$ `5 ^$ @" s' s! O9 [    array = fr.readlines() #以文件中的每行为一个元素,形成一个list列表  8 _, ^  C# X' l- W" [9 C( X) M9 ~
    num = len(array)  ( k+ r7 D3 X4 d; b5 W+ L2 w
    returnMat = zeros((num,3))#初始化元素为0的,行号数个列表,其中每个元素仍是列表,元素数是3,在此表示矩阵  
$ k( R6 B5 r' ~" g9 j, }    index = 0   
5 w4 G$ v# c  q! E6 N    for line in array:  
4 N6 |* v$ u( ^5 M. y        line = line.strip()#去掉一行后的回车符号  
& {$ j5 ?9 R" H6 Q0 d2 L        linelist = line.split(' ')#将一行根据分割符,划分成多个元素的列表  
+ M  N7 O) a* L: m# W        returnMat[index,:] = linelist[0:3]#向矩阵赋值,注意这种赋值方式比较笨拙  
- u6 g0 E$ t( d- v! Q        index +=1  
. C0 @) O! w- y( w    return returnMat; i' z) Q7 U$ h& _  j! ?

9 f  h2 j% l- F7 f; W7 V4 v* E/ Jfname = 'E:\Pythonrun\myuse\num_data.txt', K7 l0 v" o2 ]5 p
data= file2list(fname)

该用户从未签到

2#
发表于 2020-4-16 19:05 | 只看该作者
python读取Matlab的.mat数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-23 09:22 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表