问题复现
MATLAB中运行以下代码
E=[1,2;1,3;2,3;3,2;3,5;4,2;4,6;5,2;5,4;6,5];
nodes=strcat('v',int2str((1:6)'))
G=digraph(E(:,1),E(:,2),[],nodes);
出现如下错误
错误使用 matlab.internal.graph.constructFromEdgeList (第 119 行)
节点信息必须为字符串向量、字符向量元胞数组、表或节点数。
出错 digraph (第 316 行)
matlab.internal.graph.constructFromEdgeList(...
分析
调用graph
或者digraph
函数时传入的nodes
只能是字符串向量、字符向量元胞数组、表或节点数,而输出nodes
得到如下结果
nodes = 6×2 char 数组
'v1'
'v2'
'v3'
'v4'
'v5'
'v6'
可以看到nodes是一个char
数组,不符合graph
或digraph
对nodes
的数据类型的要求
解决方法
把nodes
改成字符串数组.
修改后的代码如下
第一种改法,把'v'
改成"v"
E=[1,2;1,3;2,3;3,2;3,5;4,2;4,6;5,2;5,4;6,5];
nodes=strcat("v",int2str((1:6)'))
G=digraph(E(:,1),E(:,2),[],nodes);
第二种改法,使用string
函数
E=[1,2;1,3;2,3;3,2;3,5;4,2;4,6;5,2;5,4;6,5];
nodes=string(strcat('v',int2str((1:6)')))
G=digraph(E(:,1),E(:,2),[],nodes);