簡體   English   中英

使用參數從Matlab調用Python腳本

[英]Calling Python script from Matlab with arguments

我正在從matlab調用python腳本。 python腳本需要3個數組作為輸入參數:

import sys
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_aspect('equal')

X = np.array(float(sys.argv[1]), dtype =np. float32)
Y = np.array(float(sys.argv[2]), dtype =np. float32)
Z = np.array(float(sys.argv[3]), dtype =np. float32)

scat = ax.scatter(X, Y, Z)

我這樣從Matlab調用Python腳本:

!"MYPATH\python.exe" test3.py dX dY dZ

在Matlab中, dXdYdZ均為1x500數組類型。 但是,出現以下錯誤:

ValueError: could not convert string to float: dX

看起來python腳本調用不會評估dX數組,而是將參數作為字符串。 我該如何糾正?

沒有直接的方法將數組參數傳遞給命令行程序。 基本上,所有命令行參數都將始終解釋為字符串,並分解為單詞。 您可以將命令行中的數組作為單獨的條目傳遞,但是命令行的長度是有限制的。 我建議您save Matlab中的數組save到文本文件,然后將其加載到Python程序中:

在Matlab中

filename = tempname;
data = [dX' dY' dZ'];
save(filename, 'data', '-ascii');
system(['"MYPATH\python.exe" test3.py "' filename '"']);

在Python中:

dX, dY, dZ = np.loadtxt(sys.argv[1]).T

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM