|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
5 C* h& b+ }3 n鉴于以后的目标主要是利用现有的Matlab数据(.mat或者.txt),主要考虑python导入Matlab数据的问题。以下代码可以解决python读取.mat文件的问题。主要使用sicpy.io即可。sicpy.io提供了两个函数loadmat和savemat,非常方便。
3 K7 `6 K/ X7 } j! L5 o# adapted from3 y, D' g, h! _7 f9 q
import scipy.io as sio
7 ], R5 c' Z7 T9 O Q9 I#import matplotlib.pyplot as plt$ M% W. N W' m
from pylab import *7 E* Q9 q0 N1 T) U$ G: S
import numpy as np 6 f8 X9 \! N i; U1 @
0 j' v- O+ v' |* L+ z$ y
matfn='E:\Pythonrun\myuse\matdata.mat' # the path of .mat data
& C$ Z$ _0 {: |" J4 {# S; Kdata=sio.loadmat(matfn)
7 M1 O6 k6 ~2 T- o+ S4 p" c 9 @6 T. s6 V/ l
xx=data['matdata']: C6 @5 h: A0 T0 z% ^ z- Y- p
figure(1)
o7 p/ U _8 H s4 K2 |8 Splot(xx)
1 K2 E" }1 w" R" S0 f6 Ashow()$ X/ W! l& N' V% N5 H& L3 q
3 y# C% H2 l' g4 O$ v. t
以下代码是读入txt数据并转换成数组,方法比较笨,更有效的方法待研究。 S4 C6 k, g" q& y" G) L
from numpy import *9 \; G7 j5 k0 ]/ m* Z2 J& M6 V
0 T0 b. {5 {% L3 c" S3 o$ d4 D
def file2list(filename): ! O* B: @* \/ D7 x+ b' g) \) P
fr = open(filename) * q, i/ ]. J, J* |
array = fr.readlines() #以文件中的每行为一个元素,形成一个list列表 5 ?) b; m+ S$ v) Z
num = len(array) / h; R) G q0 @4 c" u u, k
returnMat = zeros((num,3))#初始化元素为0的,行号数个列表,其中每个元素仍是列表,元素数是3,在此表示矩阵 + v% x; l7 i5 U+ V% Y3 O
index = 0
2 Q0 M$ `5 `9 c; f for line in array: * K3 p6 P9 X$ A
line = line.strip()#去掉一行后的回车符号 ' Q6 N6 C# |% h3 e3 U* n1 _6 W+ s
linelist = line.split(' ')#将一行根据分割符,划分成多个元素的列表
! ?% @% k3 c- E returnMat[index,:] = linelist[0:3]#向矩阵赋值,注意这种赋值方式比较笨拙 9 k! o$ { L2 _" z
index +=1
; |" M6 E( s b4 u. ~1 f return returnMat- j% }1 w* e+ L7 G
' x0 {( i# }' F9 G, efname = 'E:\Pythonrun\myuse\num_data.txt'
) g% y; {3 w0 q6 r# ^6 wdata= file2list(fname) |
|