在 Matlab 中保存矢量文件并在 Python 中放入数组

我在 Matlab 中保存了一个包含矢量信息的文件:


x = [1 2 3 4 5 6 7 8 9 10]

在此处输入链接描述https://www.dropbox.com/s/lxq66hlo9p37ad2/test.mat?dl=0


我如何在Python中读取这个文件以获得数组中相同的向量x?


我试过这个:


from scipy.io import loadmat


x = scipy.io.loadmat('test.mat')

print (x[0])

但它似乎只是读取文件而不放入数组。如果我print x[0]有一个错误。


Traceback (most recent call last):

  File "/home/mateus/Desktop/test.py", line 16, in <module>

    print (x[0])

KeyError: 0

>>> 


元芳怎么了
浏览 89回答 1
1回答

蝴蝶不菲

当您在 MATLAB 中保存数据时,它保存到文件中的是包含所有变量的工作区。您可以限制保存哪些变量,但即使在这种情况下,它也会保存为包含指定变量的工作区。这意味着,即使test.mat其中只有 MATLAB 中的变量“x”,当您test.mat在 python 中加载时x = scipy.io.loadmat('test.mat'),您也不会只得到“x”作为 NumPy 数组。如果你写,print(type(x))你会发现它实际上是一本字典。这就是为什么你有一个KeyError例外。这本字典里没有任何东西0作为键。您需要在 MATLAB 中指定原始变量的名称(在本例中也是“x”)才能获取实际的数组。那是,x&nbsp;=&nbsp;scipy.io.loadmat('test.mat') print(x["x"])印刷[[&nbsp;1&nbsp;&nbsp;2&nbsp;&nbsp;3&nbsp;&nbsp;4&nbsp;&nbsp;5&nbsp;&nbsp;6&nbsp;&nbsp;7&nbsp;&nbsp;8&nbsp;&nbsp;9&nbsp;10]]这是一个 2D NumPy 数组,表示一个行十列的矩阵。最后一点,请记住 MATLAB 中的向量是“列向量”,这意味着它们的维度为1xn。毕竟 MATLAB 喜欢将一切都视为矩阵。在 NumPy 中,向量是实际的一维数组,但由于数据来自 MATLAB,因此当您在 Python 中加载数据时会得到一个二维数组。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python