MATLAB:节点信息必须为字符串向量、字符向量元胞数组、表或节点数

问题复现

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数组,不符合graphdigraphnodes的数据类型的要求

解决方法

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值