Running a python script in matlab
古いコメントを表示
Hi, I tried to run a python script in matlab. I used the function system.So fa so good.
The pyhton script uses two input variables. In matlab I can enter one and then it runs without problems but when I try to enter two separate variables I always get an error.
systemCommand = ['python sqd.py ',num2str(a),num2str(omtrek)]
[status, result] = system(systemCommand);
This is the error:
status =
1
result =
Traceback (most recent call last):
File "sqd.py", line 10, in <module>
sys.stdout.write(str(squared(x)))
TypeError: squared() takes exactly 2 arguments (1 given)
Can someone help me?
Thanks!
1 件のコメント
Charles
2017 年 8 月 29 日
This is interesting I am new to python, and I am trying to to do the dame thing Does the solution in fact work? I am keen to try it. I literally do not know python at all, neither am I am a programmer but I find it all fascinating and I move forward by trail and error. Some how I make progress. I will try this, but what infrastructure do you have? I have Matlab, 2017a and Python 3.6 Do i need anything else? I am reading that the former does not support the latter. Any thoughts?
採用された回答
その他の回答 (7 件)
Bo Li
2016 年 4 月 18 日
Why not using Python Interface?
The MATLAB statement can be as simple as following:
>> b=py.sqd.squared(10,30)
1 件のコメント
M Al Mamun
2021 年 10 月 14 日
This is easy to apply and works perfectly.
Shashank Prasanna
2013 年 1 月 15 日
0 投票
Could you try the above with a space between the two arguments?
systemCommand = ['python sqd.py ',num2str(a),' ',num2str(omtrek)]
Tom Leblicq
2013 年 1 月 16 日
Tom Leblicq
2013 年 1 月 16 日
Aysha Ashraf
2017 年 12 月 21 日
0 投票
Can any one help me how to integrate this python code to matlab, i want to run this python program in matlab...
#Load dependencies import pandas as pd import numpy as np from sklearn.preprocessing import StandardScaler from matplotlib import* import matplotlib.pyplot as plt from matplotlib.cm import register_cmap from matplotlib.mlab import PCA from sklearn.decomposition import PCA
from scipy import stats #from wpca import PCA from sklearn.decomposition import PCA as sklearnPCA import seaborn
#Load movie names and movie ratings movies = pd.read_csv('movies.csv') ratings = pd.read_csv('ratings.csv') ratings.drop(['timestamp'], axis=1, inplace=True) # def replace_name(x): return movies[movies['movieId']==x].title.values[0] # ratings.movieId = ratings.movieId.map(replace_name) # M = ratings.pivot_table(index=['userId'], columns=['movieId'], values='rating') m = M.shape #posesall = pd.read_csv('FileName_Poses.csv') df1 = M.replace(np.nan, 0, regex=True) X_std = StandardScaler().fit_transform(movies) #Step 2: Covariance Matrix and Eigendecomposition mean_vec = np.mean(X_std, axis=0) cov_mat = (X_std - mean_vec).T.dot((X_std - mean_vec)) / (X_std.shape[0]-1) print('Covariance matrix \n%s' %cov_mat) print('NumPy covariance matrix: \n%s' %np.cov(X_std.T)) #Perform eigendecomposition on covariance matrix cov_mat = np.cov(X_std.T) eig_vals, eig_vecs = np.linalg.eig(cov_mat) print('Eigenvectors \n%s' %eig_vecs) print('\nEigenvalues \n%s' %eig_vals) # Step 3: Selecting Principal Components # Visually confirm that the list is correctly sorted by decreasing eigenvalues 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) Variance = (pca.explained_variance_ratio_)
#Explained variance pca = PCA().fit(X_std) plt.plot(np.cumsum(pca.explained_variance_ratio_)) plt.title('Scree Plot') plt.xlabel('Number of principal components') plt.ylabel('Cumulative explained variance') plt.show()
Yodish
2018 年 4 月 12 日
0 投票
It works for me as well, but it is very slow. It takes 0.2 sec to call a sum function from Python
Any ideas on how to speed it up? Where is the bottle neck?
Agapi Dav
2018 年 7 月 31 日
0 投票
Hello everyone! I have some images read in matlab and I want to process them in python and them return them to matlab for further processing.
Everything with the systemCommand works, however, even though I can import variables from matlab to python, because they are already in the workspace, I cannot return variables (e.g. images) back to matlab, when running the python script. Till now, in order to make it work, I save the python-processed images and then read them again from matlab.
I would like to ask if there is a more efficient way. In other words, in the example of Tom Leblicq, I would like to return the parameter b in matlab for further processing.
Thank you in advance!
1 件のコメント
Abdelwahab Afifi
2021 年 1 月 12 日
The following command will return b in the workspace of MATLAB
b=py.sqd.squared(2)
カテゴリ
ヘルプ センター および File Exchange で Call Python from MATLAB についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!