最近在做论文复现的时候抽取特征需要用到SentiBank detectors来进行图像的特征生成,然后运行起来就会报assumtype错误,其实这是由于matlab内置的bitshift已经进行了改动,源代码是根据matlab2013a运行的。
如果没有特殊需求,只需要下一个8.1版本的MCR运行binary文件夹中的Binconcept.exe即可,链接如下:
我找到解决方案的链接:
https://www.mathworks.com/matlabcentral/answers/332604-what-is-matlab-compiler-runtime-mcr-and-how-do-i-install-it
MCR下载链接:
https://www.mathworks.com/products/compiler/matlab-runtime.html
不过亲测这个速度非常之感人……大约需要2min左右的时间完成一张图片的1200个分类……而我要处理大约9w张左右的图片,这个速度肯定不行了……
因此我们需要改动source中的代码来减少分类任务,当你运行Biconcept时就会发现遇到了我第一段提到的问题,官方API说明如下:
https://ww2.mathworks.cn/help/matlab/ref/bitshift.html
其实shift第三个参数需要的是一个 类型名字,因此你只需要把代码shift的第三个参数改为‘uint8’代码就能正常了。
即所有shift代码如下进行修改:
j = bitset(bitshift(i,1,'uint8'),1,bitget(i,samples)); %rotate left
由于我之前遇到这个问题的时候也很头疼看到很多人再搜,也没找到合适的答案就自己写一篇,前人之苦后人不必再受。
而且用matlab2019a速度非常之快,几乎秒出(1200次分类)。