我一直在努力用python加载一些文件,然后在加载文件后,我想将它们导出到.mat文件,并在MATLAB中进行其余处理。我了解可以使用以下方法做到这一点:
import scipy.io as sio
# load some files, assign loaded data to variables
# ...
sio.savemat(filename,mdict)
我了解到这里正在发生的事情,并且已经将其语法视为:
alist = [5,3,6]
sio.savemat('small_list.mat',mdict={'alist':alist})
有人可以在论证的第二部分中确切地解释我在做什么sio.savemat()
,即mdict = {'alist':alist}
?我可能只是对一些更pythonic的东西感到困惑(我对python相对较新,并且主要是在使用C ++的背景下工作的),但是我对mdict术语在语法的哪些部分正在做什么方面感到困惑什么(带引号的部分是我在MATLAB中变量的名称,而未带引号的我是python中的变量?)
另外,如果我想在一个.mat
文件中保存(然后加载到MATLAB中)几个不同的变量,那会是什么样?
根据文档,savemat
定义为
io.savemat(file_name, mdict, appendmat=True, format='5', long_field_names=False, do_compression=False, oned_as='row')
因此,第二个参数是必需的,可以随mdict=...
零件一起提供或不随零件一起提供。
之所以希望它是字典,是因为它需要知道变量(数据)的保存名称。如果它接受变量,则必须组成一个名称。在Python语法中,这两个表达式将相同的东西传递给foo
。名称“ alist”不会以任何方式传递给foo
。
alist = np.arange(10)
foo('test.mat', alist)
foo('test.mat', np.arange(10))
loadmat
还返回字典,例如:
{'__version__': '1.0',
'__header__': b'MATLAB 5.0 MAT-file Platform: posix, Created on: Mon May 25 09:19:36 2015',
'__globals__': [],
'alist': array([[1, 2, 3]])}
当我load text.mat
进入时octave
,一个alist
变量会出现在工作区中。
load
产生的功能形式structure
octave:5> r=load('test.mat')
r =
scalar structure containing the fields:
alist =
1 2 3
的对应octave
功能形式save
是
save ("-option1", ..., "file", "v1", ...)
"v1"
您要保存的变量的名称在哪里。
octave/MATLAB
从全局名称空间中提取这些变量的值。在Python中(更强烈地)不鼓励这种操作。
save('-7','test1.mat',"alist")
在octave
负载为
In [1256]: io.loadmat('test1.mat')
Out[1256]:
{'__version__': '1.0',
'__header__': b'MATLAB 5.0 MAT-file, written by Octave 3.8.1, 2015-05-25 17:02:15 UTC',
'__globals__': [],
'alist': array([[1, 2, 3]])}
除了标题内容,其他内容相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句