如何解决在MATLAB中调用Python
在下面的代码中,我有一个使用伪代码和python代码的深度优先搜索。我的第一个问题是如何在MATLAB中调用该程序?
我可以使用以下内容:
system('python DFS.py')
但是我想这样称呼它:
py.DFS();
并将数据存储在MATLAB中,但是当我执行代码时,它说无法解析名称py.DFS。
第二个问题是,如何将python中的代码更改为需要MATLAB邻接列表并在代码中运行的位置,而不是将邻接列表直接放在python代码中?
#DFS(G,u)
#u.visited = true
#for each v within G.adj[u]
#if v.visited == false
#DFS(G,v)
#init() {
#For each u within G
#u.visited == false
#For each u within G
#DFS(G,u)
#}
# DFS algorithm in Python
# DFS algorithm
def dfs(graph,start,visited=None):
if visited is None:
visited = set()
visited.add(start)
print(start)
for next in graph[start] - visited:
dfs(graph,next,visited)
return visited
graph = {'1': set(['2','4','5']),'2': set(['1','3']),'3': set(['2','6']),'4': set(['1','2','3','5','6','7']),'5': set(['1','7','8']),'6': set(['3','10']),'7': set(['4','8','8': set(['5','9']),'9': set(['8','10': set(['6','9'])}
dfs(graph,'1')
n = len(graph)
s = pow(n,n-2) #number of spanning tree graphs
print("This is the number of spanning trees: ",s)
解决方法
确保将包含DFS.py文件的文件夹添加到python搜索路径。我认为您需要在MATLAB中将其称为:
visited = py.DFS.dfs(graph,start);
在调用上面的函数之前,您应该初始化图形并开始。您可以使用以下方法在MATLAB中创建python列表:
graph = py.list({1.5,3.0,2.5})
此外,您的dfs函数返回值也可以在MATLAB中访问。
您可以在https://uk.mathworks.com/help/matlab/matlab_external/call-user-defined-custom-module.html上阅读更多内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。