在 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 阅读更多内容。
在下面的代码中,我使用伪代码和 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 阅读更多内容。