Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中保存一个矢量文件,并在Python中放入数组_Python_Matlab - Fatal编程技术网

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

在Matlab中保存一个矢量文件,并在Python中放入数组,python,matlab,Python,Matlab,我在Matlab中保存了一个包含矢量信息的文件: x = [1 2 3 4 5 6 7 8 9 10] 如何在Python中读取此文件以获得数组中相同的向量x 我试过这个: from scipy.io import loadmat x = scipy.io.loadmat('test.mat') print (x[0]) 但它似乎只是读取文件,而不是放入数组。 如果我打印x[0]时出错 Traceback (most recent call last): File "/ho

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

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

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

我试过这个:

from scipy.io import loadmat

x = scipy.io.loadmat('test.mat')
print (x[0])
但它似乎只是读取文件,而不是放入数组。 如果我打印x[0]时出错

Traceback (most recent call last):
  File "/home/mateus/Desktop/test.py", line 16, in <module>
    print (x[0])
KeyError: 0
>>> 
回溯(最近一次呼叫最后一次):
文件“/home/mateus/Desktop/test.py”,第16行,在
打印(x[0])
关键错误:0
>>> 

在MATLAB中保存数据时,它保存到文件中的是包含所有变量的工作空间。您可以限制保存哪些变量,但即使在这种情况下,也会将其保存为包含指定变量的工作区

这意味着,即使
test.mat
中只有来自MATLAB的变量“x”,当您使用
x=scipy.io.loadmat('test.mat')
在python中加载
test.mat
时,也不会只得到作为NumPy数组的“x”。如果你写
print(type(x))
你会发现它实际上是一本字典。 这就是为什么会出现
KeyError
异常。本词典中没有以
0
为键的内容

您需要在MATLAB中指定原始变量的名称(在本例中也是“x”),以获得实际数组

就是

x=scipy.io.loadmat('test.mat'))
打印(x[“x”])
印刷品

[[ 1  2  3  4  5  6  7  8  9 10]]
它是一个2D NumPy数组,表示一行十列的矩阵



最后,请记住,MATLAB中的向量是“列向量”,这意味着它们具有维度
1xn
。毕竟,MATLAB喜欢把一切都当作矩阵。在NumPy中,向量是实际的1D数组,但由于数据来自MATLAB,因此在Python中加载数据时得到了2D数组。

在MATLAB中保存数据时,它保存到文件中的是包含所有变量的工作空间。您可以限制保存哪些变量,但即使在这种情况下,也会将其保存为包含指定变量的工作区

这意味着,即使
test.mat
中只有来自MATLAB的变量“x”,当您使用
x=scipy.io.loadmat('test.mat')
在python中加载
test.mat
时,也不会只得到作为NumPy数组的“x”。如果你写
print(type(x))
你会发现它实际上是一本字典。 这就是为什么会出现
KeyError
异常。本词典中没有以
0
为键的内容

您需要在MATLAB中指定原始变量的名称(在本例中也是“x”),以获得实际数组

就是

x=scipy.io.loadmat('test.mat'))
打印(x[“x”])
印刷品

[[ 1  2  3  4  5  6  7  8  9 10]]
它是一个2D NumPy数组,表示一行十列的矩阵



最后,请记住,MATLAB中的向量是“列向量”,这意味着它们具有维度
1xn
。毕竟,MATLAB喜欢把一切都当作矩阵。在NumPy中,向量是实际的1D数组,但由于数据来自MATLAB,因此在Python中加载数据时得到了2D数组。

您是否尝试过使用
x=loadmat('test.mat')
?你能给我们看一下打印的内容吗?你把矢量保存为
.mat
文件了吗?是的@马丁费弗里试过了,但没有成功@daviddura
x
的打印格式是什么?您是否尝试过使用
x=loadmat('test.mat')
?你能给我们看一下打印的内容吗?你把矢量保存为
.mat
文件了吗?是的@马丁费弗里试过了,但没有成功@大卫杜拉
x
的打印内容是什么?