有时候需要利用python进行科学计算,但需要Matlab进行交互式画图,因此需要掌握python与matlab数据互通的技巧:SciPy
- SciPy 提供了与 Matlab 的交互的方法。
- SciPy 的 scipy.io 模块提供了很多函数来处理 Matlab 的数组。
一、python利用scipy.io.savemat()存储日志
参考:https://docs.scipy.org/doc/scipy/reference/generated/scipy.io.savemat.html
(一)语法
scipy.io.savemat(file_name, mdict, appendmat = True, format = '5', long_field_names = False, do_compression = False, oned_as = 'row')
参数
file_name:str
.mat 文件的名称(如果没有扩展名,需要设置appendmat == True)
mdict:dict
从中保存 matfile 变量的字典。
appendmat:布尔值,可选
True(默认值)将 .mat 扩展名附加到给定文件名的末尾(如果尚不存在)。
fomat:{'5', '4'},字符串,可选
'5'(默认值)用于 MATLAB 5 及更高版本(至 7.2),'4' 用于 MATLAB 4 .mat 文件。
long_field_names:布尔型,可选
False(默认值)- 结构中的最大字段名称长度为 31 个字符,这是记录的最大长度。True - 结构中的最大字段名称长度为 63 个字符,适用于 MATLAB 7.6+。
do_compression:布尔值,可选
是否在写入时压缩矩阵。默认为假。
oned_as :{'row', 'column'},可选
如果是 'column',则将一维 NumPy 数组写为列向量。如果为“行”,则将一维 NumPy 数组写为行向量。
(二)例子
from scipy import io
import numpy as np
arr = np.arange(10)
io.savemat('arr.mat', {"vec": arr})
io.savemat('saveddata.mat', {'xi': xi,'yi': yi,'ui': ui,'vi': vi})
二、利用matlab读取mat日志的方法
(一)载入日志文件
mat_struct=load('C:\Users\XXX\Desktop\task3-2022y01m23d-17h52m.mat');
(二)取出元素
mat_struct=load('C:\Users\XXX\Desktop\task3-2022y01m23d-17h52m.mat');
ans=mat_struct.ans;
select_info=mat_struct.select_info;
select_info_p=mat_struct.select_info_p;
clear mat_struct;
|