在matlab中运行python脚本

272浏览量(过去30天)
汤姆Leblicq
汤姆Leblicq 2013年1月15日
评论道: 米艾尔马蒙2021年10月14日15:43
你好,我试着在matlab中运行一个python脚本。我用了函数系统。太好了。
python脚本使用两个输入变量。在matlab中,我可以输入一个,然后运行没有问题,但当我尝试输入两个独立的变量时,我总是得到一个错误。
systemCommand = [“python sqd.py”num2str (a), num2str (omtrek)]
[status, result] = system(systemCommand);
错误如下:
状态=
1
结果=
Traceback(最近的调用):
文件“sqd.py”、线10,在<模块>
sys.stdout.write (str(平方(x)))
TypeError:平方()2个参数(1给出)
有人能帮我吗?
谢谢!
1评论
查尔斯
查尔斯 2017年8月29日
这是有趣的,我是新的python,我试图做dame的事情,解决方案实际上工作?我很想试试。我完全不知道python,我也不是一个程序员,但我发现它所有的迷人,我前进的轨迹和错误。我是如何取得进步的。我会试试这个,但是你们有什么基础设施?我有Matlab, 2017a和Python 3.6我还需要什么吗?我读到的是前者并不支持后者。万博1manbetx任何想法吗?

登录评论。

接受的答案

弗里德里希
弗里德里希 2013年1月16日
编辑:弗里德里希 2013年1月16日
你好,
当修改你的脚本为:
进口sys
def(平方,omtrek):
b = (omtrek / 2)
返回b
如果__name__ = =“__main__ '
x =浮动(sys.argv [1])
y =浮动(sys.argv [2])
sys.stdout.write (str(平方(x, y)))
并从MATLAB调用它:
>>C:\Python32\python.exe sqd.py 1
它对我很管用。或者以你的方式:
>> a = 1
>> omtrek = 2
> > systemCommand = [“C: \ Python32 \ python.exe sqd.py”num2str (a),' 'num2str (omtrek))
> >系统(systemCommand)
0.0
ans =
0
1评论
Aravind Sasikumar
Aravind Sasikumar 2016年4月18日
你好,以上代码为我也工作。程序正在运行,但我无法在Matlab中取回b的值。我想进一步计算b的值。
导入系统
def添加(a、c):
b = a + c
返回b
如果 _name _ = =“主要”:
x =浮动(sys.argv [1])
y =浮动(sys.argv [2])
sys.stdout.write (str(添加(x, y)))
为什么我没有在matlab中得到b的值?

登录评论。

更多的答案(7)

Bo李
Bo李 2016年4月18日
为什么不使用Python接口?
MATLAB语句可以简单如下:
> > b = py.sqd.squared(10、30)
1评论
米艾尔马蒙
米艾尔马蒙 2021年10月14日15:43
这是容易应用和完美的工作。

登录评论。


沙Prasanna
沙Prasanna 2013年1月15日
你可以试试上面的方法,在两个参数之间留一个空格吗?
systemCommand = ['python sqd.py ',num2str(a),' ',num2str(omtrek)]

汤姆Leblicq
汤姆Leblicq 2013年1月16日
这是python脚本:
进口sys
def(平方,omtrek):
b = (omtrek / 2)
返回b
如果__name__ = =“__main__ '
x =浮动(sys.argv [1])
sys.stdout.write (str(平方(x)))
这是非常简单的代码,但这只是一个测试一个更复杂的程序,我想运行。
在python中它可以工作。在Matlab中没有。确实,代码需要两个输入。但我的问题是如何用matlab给出两个输入?

汤姆Leblicq
汤姆Leblicq 2013年1月16日
你是对的,弗里德里希,这行得通!谢谢!
但是这样做,我有另一个问题。python代码计算参数“b”的值。我需要这个参数在matlab中进一步处理。正确的值出现在我的屏幕上,但我不能处理它。例如:
2.0 > >

Aysha阿什拉夫
Aysha阿什拉夫 2017年12月21日
有谁能帮助我如何集成这个python代码到matlab,我想在matlab中运行这个python程序…
#Load dependencies import pandas as pd import numpy as np from sklearn。预处理import StandardScaler from matplotlibPyplot作为PLT来自matplotlib。Cm从matplotlib导入register_cmap。mlab import PCA from learning .decomposition import PCA
从scipy import stats #from wpca import PCA from sklearn.decomposition import PCA as sklearnPCA import seaborn
#加载电影名称和电影评级movies = pd.read_csv('movies.csv') ratings = pd.read_csv('ratings.csv') ratings. pngdrop(['timestamp'], axis=1, inplace=True) # def replace_name(x): return movies[movies['movieId']==x].title。值[0]#评级。# M = ratings.movieId.map(replace_name) # M = ratings.movieId.map(replace_name)数据透视表(index=['userId'], columns=['movieId'], values='rating') m = m .shape #posesall = pd.read_csv('FileName_Poses.csv')#Step 2:协方差矩阵和特征分解mean_vec = np。cov_mat = (X_std - mean_vec). t。点((X_std - mean_vec)) / (X_std.shape[0] 1)打印(协方差矩阵\ n % s的% cov_mat)打印(NumPy协方差矩阵:\ n % s的% np.cov (X_std.T)) #对协方差矩阵进行eigendecomposition cov_mat = np.cov (X_std.T) eig_vals eig_vecs = np.linalg.eig (cov_mat)打印(特征向量\ n % s的% eig_vecs)打印(‘\ nEigenvalues \ n % s % eig_vals) # 3步:eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:,i]) for i in range(len(eig_vals))] print(' eigenvalues in descending order:') for i in eig_pairs:print(i[0]) pca = pca (n_components = 93) All_poses_pca = pca.fit_transform(movies)方差= (pca.explained_variance_ratio_)
#解释方差pca = pca ().fit(X_std) plt.plot(np.cumsum(pca.explained_variance_ratio_)) plt。标题(“小石子阴谋”)plt。xlabel('主成分数量')ylabel('累计解释方差')

Yodish
Yodish 2018年4月12日
这对我来说也很有效,但是速度很慢。从Python调用sum函数需要0.2秒
有什么办法能加快速度吗?瓶颈在哪里?

Agapi Dav
Agapi Dav 2018年7月31日
大家好!我有一些图像读在matlab和我想处理他们在python和他们返回他们的matlab进一步处理。
一切与systemCommand工作,然而,即使我可以从matlab导入变量到python,因为他们已经在工作空间,我不能返回变量(例如图像)matlab,当运行python脚本。到目前为止,为了使它工作,我保存python处理的图像,然后从matlab中再次读取它们。
我想问一下是否有更有效的方法。换句话说,在Tom Leblicq的例子中,我想在matlab中返回参数b以进行进一步处理。
提前谢谢你!
1评论
Abdelwahab阿菲菲
Abdelwahab阿菲菲 2021年1月12日
下面的命令将在MATLAB的工作空间中返回b
b = py.sqd.squared (2)

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!