在MATLAB中调用Python
在下面的代码中,我使用伪代码和python代码进行了深度优先搜索。我的第一个问题是如何在MATLAB中调用这个程序 我可以使用以下方法:在MATLAB中调用Python,python,algorithm,matlab,graph-theory,depth-first-search,Python,Algorithm,Matlab,Graph Theory,Depth First Search,在下面的代码中,我使用伪代码和python代码进行了深度优先搜索。我的第一个问题是如何在MATLAB中调用这个程序 我可以使用以下方法: system('python DFS.py') 但我想这样称呼它: py.DFS(); 并将数据存储在MATLAB中,但当我执行代码时,它表示无法解析名称py.DFS 我的第二个问题是,如何将python中的代码更改为使用MATLAB邻接列表并在代码中运行,而不是将邻接列表直接放在python代码中 #DFS(G, u) #u.visited =
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})
此外,还可以在MATLAB中访问dfs函数返回值
您可以在上阅读更多信息。确保将包含DFS.py文件的文件夹添加到python搜索路径中。我认为您需要在MATLAB中将其称为:
visited = py.DFS.dfs(graph, start);
您应该在调用上述函数之前初始化图形并启动。可以使用以下方法在MATLAB中创建python列表:
graph = py.list({1.5,3.0,2.5})
此外,还可以在MATLAB中访问dfs函数返回值
您可以在上阅读更多信息。谢谢,代码运行正常,并返回了一堆顶点。但是,由于某种原因,它给了我一个错误,Python错误:TypeError:dfs缺少2个必需的位置参数:“graph”和“start”。对第二个问题中的混乱表示歉意:我想在matlab中输入一个邻接矩阵或列表作为变量,对其应用python代码,并在matlab中作为变量给出答案。谢谢,代码运行正常,并返回一堆顶点。但是,由于某种原因,它给了我一个错误,Python错误:TypeError:dfs缺少2个必需的位置参数:“graph”和“start”。对第二个问题中的混乱表示歉意:我想在matlab中输入一个邻接矩阵或列表作为变量,对其应用python代码,并在matlab中作为变量给出答案。回答第二个问题:我总是在matlab中寻找内置函数。要执行深度优先搜索,请使用dfsearch函数。你可以在这里阅读:回答你的第二个问题:我总是在Matlab中寻找内置函数。要执行深度优先搜索,请使用dfsearch函数。您可以在此处阅读: