MATLAB2018a与2016b分类学习模型Java库向上兼容操作
Posted estivalinp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB2018a与2016b分类学习模型Java库向上兼容操作相关的知识,希望对你有一定的参考价值。
matlab2016版本无法兼容matlab2018版本Classification Learner创建的分类器
在java环境下,使用matlab2016版本调用matlab2018版本Classification Learner创建的分类器,步骤如下:
保持matlab java版本与系统版本一致,eclipse版本可不一致
1. 提取模型:使用显式函数调用模型(类似MATLAB Coder方式,因为java不支持函数句柄)
saveCompactModel(trainedModel.ClassificationEnsemble,‘ClassificationLearnerModel‘)
model = loadCompactModel(‘ClassificationLearnerModel‘);
2. 自定义StructToModel,原因:fromStructFcn 函数句柄无法识别
% fromStructFcn = str2func(compactStruct.FromStructFcn);
obj = classreg.learning.classif.CompactClassificationEnsemble.fromStruct(compactStruct);
3. 文件覆盖:使用2018版本文件覆盖2016版本的 %MATLAB_home%\%version% oolboxstatsclassreg 所有文件
4. 改回相应分类器的mex文件至2016版本
5. 创建jar包一次,根据java错误提示注释分类器m文件中Adapter语句
6. fromStruct无法识别,遂手动保存并读取obj文件
% fromStructFcn = str2func(compactStruct.FromStructFcn);
% obj = classreg.learning.classif.CompactClassificationEnsemble.fromStruct(compactStruct);
obj = load(‘obj.mat‘);
obj = obj.obj;
下面就能在matlab2016环境下,用matlab complier创建jar包了,经测试能正常调用matlab2018创建的分类器。
以上是关于MATLAB2018a与2016b分类学习模型Java库向上兼容操作的主要内容,如果未能解决你的问题,请参考以下文章
matlab2016b -ubuntu 1604 -install- and -trouble -shooting--finally-all is ok!!