EDA365电子论坛网

标题: python读取Matlab的.mat数据 [打印本页]

作者: uperrua    时间: 2020-4-16 10:33
标题: python读取Matlab的.mat数据
, C6 p9 |5 O2 L
鉴于以后的目标主要是利用现有的Matlab数据(.mat或者.txt),主要考虑python导入Matlab数据的问题。以下代码可以解决python读取.mat文件的问题。主要使用sicpy.io即可。sicpy.io提供了两个函数loadmat和savemat,非常方便。: ^4 d: `& j- \
# adapted from
% G, ~! |6 j' Y$ O5 z* Zimport scipy.io as sio  $ v. V4 C7 J/ @9 W* X; ?) L1 C
#import matplotlib.pyplot as plt7 g' I* N* Q. T6 I
from pylab import *
5 E$ M$ z5 E& [import numpy as np  
4 F7 s9 O0 Z' }$ f; u! _  
$ X1 B6 j2 t7 \5 cmatfn='E:\Pythonrun\myuse\matdata.mat'   # the path of .mat data( \& c& p9 S) W8 ^
data=sio.loadmat(matfn)  4 o* ], @+ U; l, M+ H
  + q. ?" D9 D0 X1 h
xx=data['matdata']
8 x& s. u9 y3 E; ffigure(1)
1 P- i  L0 E3 a) v- N/ ~plot(xx)
- \3 K# ^5 c  `& F& [0 @# hshow()
4 v6 V8 T: R: q4 W+ Q& O: I7 d4 Q$ V; b7 _6 v, Y' u
以下代码是读入txt数据并转换成数组,方法比较笨,更有效的方法待研究。# [( d, Q9 n& B2 {! t
from numpy import *! F8 C! {6 V  d

  t% d3 Z8 A! b, ^, Q  P/ idef file2list(filename):  
& j2 H# {4 N; r* A3 V    fr = open(filename)    n) t/ e1 Z) V& M( {( b, J
    array = fr.readlines() #以文件中的每行为一个元素,形成一个list列表  
5 X6 u; ]3 r0 B  X    num = len(array)  
7 W- d* U0 l, ?; u    returnMat = zeros((num,3))#初始化元素为0的,行号数个列表,其中每个元素仍是列表,元素数是3,在此表示矩阵  % a$ E& R( l; {3 H
    index = 0   
3 z6 o$ r8 I# z! o    for line in array:  
/ ?8 `  D. s9 _        line = line.strip()#去掉一行后的回车符号  
, _* J0 V3 N$ B: B' O; e# L        linelist = line.split(' ')#将一行根据分割符,划分成多个元素的列表  
1 h6 K/ K9 }! ~" Z& h2 O        returnMat[index,:] = linelist[0:3]#向矩阵赋值,注意这种赋值方式比较笨拙  
! `- c+ ?8 F+ s7 m( o" z2 l        index +=1  , L( ]% }/ o! N3 P
    return returnMat( b" {! p; y4 X6 R5 Y# j
  S  }# N, g9 k; ?" j  s( O& `
fname = 'E:\Pythonrun\myuse\num_data.txt'- e" [; g& \% f9 M8 B& Q- p
data= file2list(fname)
作者: ExxNEN    时间: 2020-4-16 19:05
python读取Matlab的.mat数据




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2