从 Python 调用 MATLAB 函数会引发错误'undefined function'



我试图从python调用MATLAB函数并继续使用python的结果。我的脚本就像这样简单:

import librosa
import numpy as np
import matlab
import matlab.engine
eng = matlab.engine.start_matlab()
eng.addpath('TFDs/', '-end')
audio = librosa.chirp(0, 5000, duration=1, linear=True)
audio = matlab.double(audio.tolist())
choi_williams = eng.dtfd_nonsep(audio ,'cw',{30})
print(choi_williams)

我正在创建一个线性啁啾,并期望在fast_tfd库的帮助下计算它的时间频率分布。fast_tfd文件夹是执行脚本的当前目录的一部分。但是我收到这个错误信息:

未定义的函数'dtfd_nonsep'用于'cell'类型的输入参数。

Traceback(最近一次调用):文件"cw.py",第12行Choi_williams = eng。dtfd_nonsep(audio,'cw',{30}) File "/home/dunkeljo/tmp/anaconda3/envs/keras-gpu/lib/python3.8/site-packages/matlab/engine/matlabengine.py"第70行,在中调用返回futurerresult (self._engine(), future, nargs, _stdout, File "/home/dunkeljo/tmp/anaconda3/envs/keras-gpu/lib/python3.8/site-packages/matlab/engine/futurerresult .py"第67行,result文件"/home/dunkeljo/tmp/anaconda3/envs/keras-gpu/lib/python3.8/site-packages/matlab/engine/fevalfuture.py"第82行,结果自我。_result = pythonengine.getFEvalResult(self._future,self. _future)_nargout,没有,=自我。_out, err=self._err)未定义函数'dtfd_nonsep'用于'cell'类型的输入参数。#

我做错了什么?我甚至不确定问题是输入参数还是无法找到函数。函数的使用是错误的吗?甚至是它们的进口?还是输入参数有问题?有人知道吗?

解决方案是按照www.weagle的建议:只需添加cell2mat,它就可以工作了:

import librosa
import numpy as np
import matlab
import matlab.engine
eng = matlab.engine.start_matlab()
eng.addpath('TFDs/', '-end')
audio = librosa.chirp(0, 5000, duration=1, linear=True)
audio = eng.cell2mat(audio.tolist())
audio = eng.double(audio)
choi_williams = eng.dtfd_nonsep(audio, 'cw', {eng.double(30)})
print(choi_williams)

相关内容

  • 没有找到相关文章

最新更新