向matlab2021a中导入FullBNT出现的问题,“无效表达式。请检查缺失的乘法运算符、缺失或不对称的分隔符或者其他语法错误。要构造矩阵,请使用方括号而不是圆括号。”


  实验课要求使用matlab构建贝叶斯网络分类器,于是在网上查阅相关资料。找到了这篇博客 利用matlab进行简单的贝叶斯网络构建,按照文中的方式下载toolbox并进行搜索路径的添加。添加完之后出现了两个问题。

问题描述

1.toolbox中的某些函数和matlab内置函数同名
  这个问题没有处理,毕竟是一次实验课作业,但没有将该搜索路径永久保存,避免以后使用同名函数出现错误。
在这里插入图片描述
2.频繁弹出下图中的对话框
  这个问题就影响正常使用了,不管是运行程序还是查看工作区的变量,都会弹出这个窗口。
在这里插入图片描述
  而且FullBNT中的函数也无法正常使用(按照官网的例子,网络图可视化后只有结点,没有连线)并报错。
在这里插入图片描述
在这里插入图片描述

  几次尝试后,发现不导入FullBNT的搜索路径,就不会出现该问题(如果已经永久保存搜索路径的话,可能需要对该搜索路径进行删除,个人猜测,如有错误,请评论区指正)。打开draw_graph.m这个文件后也发现,这个函数的最后一次修改在2000年,函数中使用的语法在2021版本的编辑器中打开会标红,估计是代码编写时间太久远,造成了和编译器的兼容出现了些问题。(官方文档的最后一次更新也在久远的2007年)

解决办法

  大概搞清问题后,就去找版本更新的toolbox。感谢这位网友的指路,找到了最近更新在2014年的BNT,按照第一篇博客中的方法将这个新的BNT解压缩,移动文件位置,并添加搜索路径就可以了。

以下是具体步骤:
(1) 解压bnt-master.zip,将整个目录bnt-master复制到MATLAB的安装目录的TOOLBOX目录下(我的是 D:\matlab2021a\toolbox\)
(2) 将BNT添加到matlab的搜索路径中

addpath(genpath(‘D:\matlab2021a\toolbox\bnt-master’))

  上述的两个问题都得到了解决,但暂时只进行了draw_graph()函数的使用,不知道后续是否会出现其他问题。
在这里插入图片描述

测试代码

注意修改搜索路径

clc
clear
close all

addpath(genpath('D:\matlab2021a\toolbox\bnt-master'));

N = 4;
dag = zeros(N, N);
C = 1; S = 2; R = 3; W = 4;

dag(C, [S R]) = 1;
dag([S R], W) = 1;

draw_graph(dag);

感谢上述所有网友的分享。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值