Запустите скрипт Matlab из Python: TypeError: объект 'float' не повторяется - PullRequest
0 голосов
/ 28 января 2019

На самом деле у меня проблема при вызове скрипта 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 и массивом целочисленного "состояния", например, sr =34,31 и состояние = [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

Кто-нибудь, пожалуйста, дайте мне решение.Заранее большое спасибо.

1 Ответ

0 голосов
/ 06 мая 2019

Кажется, что результат от MATLAB до Python был обрезан.Если у вас есть два параметра, вы получите только один, который является первым параметром в MATLAB.Итак, вопрос в том, как получить два или более параметров.

Одним словом, вы должны написать это в своем файле Python:

re = eng.your_function_name(parameter1, parameter2, nargout=2)

, где re содержит два параметра, которые приходятот MATLAB.

Более подробную информацию вы можете найти в официальной документации: Вызов функций MATLAB из Python

...