微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在MATLAB中调用Python

如何解决在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 举报,一经查实,本站将立刻删除。