Запустите скрипт 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

Другие вопросы по тегам