필터 지우기
필터 지우기

How to call a matlab plot function from python with arguments?

조회 수: 23 (최근 30일)
Nicholas Clavette
Nicholas Clavette 2020년 7월 13일
편집: Kushal Malhotra 2021년 7월 27일
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:

답변 (1개)

Sai Sri Harsha Vallabhuni
Sai Sri Harsha Vallabhuni 2020년 7월 14일
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
Nicholas Clavette
Nicholas Clavette 2020년 7월 14일
Hi Sai,
Thanks for your response. That did not work unfortunately. I've graduated to using Matlab Library Compiler and Matlab runtime to create my plot. I get no errors, but the plot only displays for a millisecond. Any advice?
import matlab
import tPlotPkg
X = matlab.double([1, 2, 3, 4, 5])
Y = matlab.double([6, 7, 8, 9, 10])
Z = matlab.double([1, 2, 3, 4, 5])
myPlot = tPlotPkg.initialize()
myPlot.tplot(X, Y, Z, nargout=0)
Again, code compiles fine. I see a window flash on my screen (I am assuming this is my plot)? Then the program ends. Is there a way to stall while the window is open?
Kushal Malhotra
Kushal Malhotra 2021년 7월 27일
편집: Kushal Malhotra 2021년 7월 27일
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. :)

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Call MATLAB from Python에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by