Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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 engine for python中的save()命令_Python_Matlab_Workspace_Mat File_Matlab Engine - Fatal编程技术网

matlab engine for python中的save()命令

matlab engine for python中的save()命令,python,matlab,workspace,mat-file,matlab-engine,Python,Matlab,Workspace,Mat File,Matlab Engine,我正在使用Python的MATLAB引擎API 我想打开并保存一个文件 #import and start the engine import matlab.engine eng = matlab.engine.start_matlab() print('Matlab engine started') #File of interest myBadFile='test.mat' #Synchronize python/matlab working directory eng.cd(os.get

我正在使用Python的MATLAB引擎API

我想打开并保存一个文件

#import and start the engine
import matlab.engine
eng = matlab.engine.start_matlab()
print('Matlab engine started')
#File of interest
myBadFile='test.mat'
#Synchronize python/matlab working directory
eng.cd(os.getcwd(),nargout=0)
print(eng.pwd())
#Read file contents
VALUES=eng.load(myBadFile,nargout=1)
到目前为止还不错。我真的很惊讶它能如此顺利地工作

我在
值上执行我的操作,然后我想再次保存它。
如果我这样做

我得到:

MatlabExecutionError: Variable 'VALUES' not found.
如果我这样做

VALUES=eng.save(myBadFile+'.test',VALUES,'-v6',nargout=0)
我明白了

MatlabExecutionError: Argument must contain a character vector.
那么,如何保存在python环境中是有效变量但在matlab中看不到的值呢?

操作matlab工作区中包含的变量,并且python与matlab引擎实例不共享作用域。但是,该实例确实有一个属性,定义如下:

Python字典,包含对MATLAB变量的引用。你可以 通过
工作区
。创建的每个MATLAB变量的名称都将成为一个键 在
工作区
字典中。
工作区中的键必须有效
MATLAB标识符(例如,不能将数字用作键)

您可以使用它将变量放置在MATLAB的范围内

此代码,例如:

import matlab.engine
eng = matlab.engine.start_matlab()
x = [1, 2, 3]
eng.save('test.mat', 'x')
如上所述:

Error using save
Variable 'x' not found.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\excaza\AppData\Roaming\Python\Python36\site-packages\matlab\engine\matlabengine.py", line 78, in __call__
    _stderr, feval=True).result()
  File "C:\Users\excaza\AppData\Roaming\Python\Python36\site-packages\matlab\engine\futureresult.py", line 68, in result
    return self.__future.result(timeout)
  File "C:\Users\excaza\AppData\Roaming\Python\Python36\site-packages\matlab\engine\fevalfuture.py", line 82, in result
    self._result = pythonengine.getFEvalResult(self._future,self._nargout, None, out=self._out, err=self._err)
matlab.engine.MatlabExecutionError: Variable 'x' not found.
Error using save
Variable 'x' not found.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\excaza\AppData\Roaming\Python\Python36\site-packages\matlab\engine\matlabengine.py", line 78, in __call__
    _stderr, feval=True).result()
  File "C:\Users\excaza\AppData\Roaming\Python\Python36\site-packages\matlab\engine\futureresult.py", line 68, in result
    return self.__future.result(timeout)
  File "C:\Users\excaza\AppData\Roaming\Python\Python36\site-packages\matlab\engine\fevalfuture.py", line 82, in result
    self._result = pythonengine.getFEvalResult(self._future,self._nargout, None, out=self._out, err=self._err)
matlab.engine.MatlabExecutionError: Variable 'x' not found.
import matlab.engine
eng = matlab.engine.start_matlab()
x = [1, 2, 3]
eng.workspace['x'] = x
eng.save('test.mat', 'x')