欢迎学习交流!
邮箱: z…@1…6.com
网站: https://zephyrhours.github.io/
图像分类后的精度评价常会用到混淆矩阵进行精度评价,下面是笔者在运行相关代码时遇到的一些问题,具体解决办法如下。
在使用 rotateXLabels 函数进行混淆矩阵中定义的标签旋转时发生了错误,具体错误如下:
根据MATLAB命令行的提示可以发现,问题应该出现在了 handle.listener 函数。所以我们定位文件位置,然后打开该函数,
找到其中对应位置,问题出现在了第322-329行的handle.listener 函数。
通过网上查阅资料发现,其时主要问题是MATLAB版本升级后,函数发生了变化造成的,在MATLAB 2014b 以及以后的新的版本中,创建了新的图形系统,所以 handle.listener 就变成了无效函数,取而代之的是 addlistener 函数。具体解决方法如下:
为了解决这个问题,笔者专门查阅了一些资料,然后将这两个函数的调用方法格式列出,以方便读者参考,具体如下:
handle.listener和addlistener函数的本质是相同的,都是作为事件监听器来使用,但是两个函数的调用格式有所不同,具体如下:
handle.listener( axh, findprop( axh, 'FontName' ), 'PropertyPostSet', @onAxesFontChanged )
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