Запустите скрипт Matlab из Python: TypeError: объект 'float' не повторяется
На самом деле у меня проблема при вызове скрипта Matlab из Python.
import matlab.engine
import os
import random
import numpy as np
a=[str(random.randint(1,3)) for _ in range(3)]
print(a)
eng=matlab.engine.start_matlab()
eng.cd("/Users/dha/Documents/MATLAB/test-matlab/",nargout=0)
sr, state=eng.test_func()
print(sr)
print(state)
На самом деле я хочу вернуть "sr", который является float и массивом целочисленных "state", например, sr = 34.31 и state = [1,2,5]. Функция test_func() хорошо работает на Matlab, но когда я запускаю это в Python из терминала (python test_matlab_engine.py), я получил следующую ошибку:
Traceback (most recent call last):
File "test_matlab_engine.py", line 10, in <module>
sr, state=eng.mabuc_drl(a)
TypeError: 'float' object is not iterable
Кто-нибудь, пожалуйста, дайте мне решение. Огромное спасибо заранее.
0 ответов
Кажется, что результат от MATLAB до Python был обрезан. Если у вас есть два параметра, вы получите только один, который является первым параметром в MATLAB. Итак, вопрос в том, как получить два или более параметров.
Одним словом, вы должны написать это в вашем файле Python:
re = eng.your_function_name(parameter1, parameter2, nargout=2)
где re
содержит два параметра, которые приходят из MATLAB.
Вы можете найти больше информации в официальной документации: вызов функций MATLAB из Python