欢迎学习交流!
邮箱: z…@1…6.com
网站: https://zephyrhours.github.io/
前言
图像分类后的精度评价常会用到混淆矩阵进行精度评价,下面是笔者在运行相关代码时遇到的一些问题,具体解决办法如下。
一、问题描述
在使用 rotateXLabels 函数进行混淆矩阵中定义的标签旋转时发生了错误,具体错误如下:
根据MATLAB命令行的提示可以发现,问题应该出现在了 handle.listener 函数。所以我们定位文件位置,然后打开该函数,
找到其中对应位置,问题出现在了第322-329行的handle.listener 函数。
通过网上查阅资料发现,其时主要问题是MATLAB版本升级后,函数发生了变化造成的,在MATLAB 2014b 以及以后的新的版本中,创建了新的图形系统,所以 handle.listener 就变成了无效函数,取而代之的是 addlistener 函数。具体解决方法如下:
- 方法一:安装 MATLAB R2014b之前的版本(这种是最无脑的解决方法,不推荐。window系统可以同时安装多个版本的matlab, 所以如果怕麻烦,也可以安装多个版本来解决这个问题)
- 方法二:修改原来的handle.listener函数,将其替换为addlistener函数,并对其内部属性变量进行适当更改(下面重点说这个,很简单,不用怕,已经帮你搞定,仔细看)
二、解决方法
为了解决这个问题,笔者专门查阅了一些资料,然后将这两个函数的调用方法格式列出,以方便读者参考,具体如下:
handle.listener和addlistener函数的本质是相同的,都是作为事件监听器来使用,但是两个函数的调用格式有所不同,具体如下:
- handle.listener 调用格式如下:
handle.listener( axh, findprop( axh, 'FontName' ), 'PropertyPostSet', @onAxesFontChanged )
- addlistener 调用格式如下:
addlistener( axh, 'FontName', 'PostSet', @onAxesFontChanged )
因此我们只需按照addlistener函数的调用格式修改handle.listener函数即可,
- 将rotateXLabel.m中第322-329行中的handle.listener改为addlistener
- 将后面()中axh之后的参数由findprop( axh, ‘FontName’ ) 改为’FontName’,其他语句作类似修改。
- 将后面()中的’PropertyPostSet’改为’PostSet’
对 第317-332 function addListeners 函数 的代码进行替换,具体的 替换代码 如下:
function addListeners( ax )
% Create listeners. We store the array of listeners in the axes to make
% sure that they have the same life-span as the axes they are listening to.
axh = handle( ax );
listeners = [
addlistener( axh, 'FontName' , 'PostSet', @onAxesFontChanged )
addlistener( axh, 'FontSize' , 'PostSet', @onAxesFontChanged )
addlistener( axh, 'FontWeight' , 'PostSet', @onAxesFontChanged )
addlistener( axh, 'FontAngle' , 'PostSet', @onAxesFontChanged )
addlistener( axh, 'FontUnits' , 'PostSet', @onAxesFontChanged )
addlistener( axh, 'OuterPosition' , 'PostSet', @onAxesPositionChanged )
addlistener( axh, 'XLim' , 'PostSet', @onAxesLimitsChanged )
addlistener( axh, 'YLim' , 'PostSet', @onAxesLimitsChanged )
];
setappdata( ax, 'RotateXLabelsListeners', listeners );
end % addListeners
修改后 的函数结果如下:
修改完成后,重新运行main函数,即可顺利通过,此时混淆矩阵标签可以完成旋转,具体结果如下:
Refereces:
[1] https://blog.csdn.net/ys0129/article/details/112259795
[2] https://blog.csdn.net/stu_lavender/article/details/79615474