matlab engine for python中的save()命令
我正在使用Python的MATLAB引擎API 我想打开并保存一个文件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
#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')