在 MATLAB 中调用 Python

Calling Python in MATLAB

在下面的代码中,我使用伪代码和 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', '4', '3']),
         '3': set(['2', '4', '6']),
         '4': set(['1', '2', '3', '5', '6', '7']),
         '5': set(['1', '4', '7', '8']),
         '6': set(['3', '4', '7', '10']),
         '7': set(['4', '5', '6', '8', '10']),
         '8': set(['5', '7', '9']),
         '9': set(['8', '10']),
         '10': set(['6', '7', '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 函数 return 值可以在 MATLAB 中访问。

您可以在 https://uk.mathworks.com/help/matlab/matlab_external/call-user-defined-custom-module.html 阅读更多内容。