How to call a matlab plot function from python with arguments?
13 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi all,
I am trying to create 3D graphs in python and cannot use matplotlib, as I need to be able to plot with log scales. This led me to controlling matlab via python. I am trying to create a function to plot a 3d graph. When I call my function in python, I get an error saying "not enough input arguments". Here is my matlab code, python code, and screenshot of error. Can anyone point me in the right direction?
matlab, tplot.m
function tplot(X, Y, Z)
figure
plot3(X, Y, Z)
end
python
import matlab.engine
eng = matlab.engine.start_matlab()
X = matlab.double([1, 2, 3, 4, 5])
Y = matlab.double([5, 6, 7, 8, 5])
Z = matlab.double([9, 10, 11, 12, 13])
eng.tplot(X, Y, Z, nargout=0)
eng.close()
and lastly my error:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/331430/image.png)
0 comentarios
Respuestas (1)
Sai Sri Harsha Vallabhuni
el 14 de Jul. de 2020
Instead of
eng.tplot(X, Y, Z, nargout=0)
Try this
eng.run("\path\to\tplot.m\file", X, Y, Z, nargout = 0)
Hope this helps.
2 comentarios
Kushal Malhotra
el 27 de Jul. de 2021
Editada: Kushal Malhotra
el 27 de Jul. de 2021
Hello @Nicholas Clavette
Try a matlab function eng.hold("on",nargout=0). If that doesn't work then I would suggest it usually happens because the python script is terminated. So at the last line of your python program add time.sleep(1000). This won't terminated the current pthon program and allow you to view those figures for the amount of time mentioned in .sleep() method. The time is in seconds mentioned above. :)
Ver también
Categorías
Más información sobre Python Package Integration 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!