How do I call a custom python function from matlab that uses an import statement?

2 visualizaciones (últimos 30 días)
I have a custom python script called with two functions:
import numpy
def createarray(n):
P = numpy.ones(2);
return P
def createarray2(n):
P = 2;
return P
def createarray3():
P = 3.14;
return P
I can call createarray2 from matlab by using these commands: testmat2 = py.importlib.import_module('testmat2');
>> testmat2.createarray2(2)
ans =
However when I call createarray, matlab can't handle this request:
>> testmat2.createarray(2)
Error using numeric>ones (line 192)
Python Error: TypeError: 'float' object cannot be interpreted as an index
Error in testmat2>createarray (line 24)
P = numpy.ones(2);
How do I get matlab to use functions that use import statements.

Respuestas (1)

Robert Snoeberger
Robert Snoeberger el 17 de Jul. de 2017
Based on the error message, "TypeError: 'float' object cannot be interpreted as an index" you are passing a double when you should be passing an integer, such as in32. Try this:
>> testmat2.createarray(int32(2))
Note that the literal 2 is a double in MATLAB. When it is passed to Python, it is automatically converted to a Python float [1]. That is what the error message is complaining about.


Más información sobre Call Python from MATLAB en Help Center y File Exchange.


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by