Classification Learner App Backward Compatibility

4 views (last 30 days)
I have trained a coarse tree model using R2024b and it has been exported to simulink and integrated to a system. I need to export the whole system including the learner subsystem to R2018b. When I did that, The learner subsystem became empty, even though from what I know is that coarse tree is supported in R2018b. Are models not backward compatible? If not all of them, then what models are backward compatible from R2024b to R2018b?
Thanks in advance!

Accepted Answer

Shantanu Dixit
Shantanu Dixit on 22 Apr 2025
Edited: Shantanu Dixit on 22 Apr 2025
Hi Mohamed, If I understood the query correctly you are using 'Export Model' option to export the tree model to Simulink, which generates a Simulink subsystem with a dedicated block (eg. 'ClassificationTree Predict' block: https://www.mathworks.com/help/stats/classificationtreepredict.html).
While the tree model itself (here 'ClassificationTree') is supported in R2018b, the Simulink Prediction blocks (e.g., 'ClassificationTree Predict') are not available in older releases. Specifically 'ClassificationTree Predict' and'RegressionTree Predict' block were introduced in R2021a, which might be the reason that older MATLAB version might not be recognizing them, resulting in empty subsytems.
As a workaround, you can replace the unsupported prediction block with a MATLAB function block that calls the 'predict' method of the tree model. You can refer to the following documentation https://www.mathworks.com/help/stats/predict-class-labels-using-matlab-function-block.html which details on using a MATLAB function for predicting labels from an ML model.
Hope this helps!
  1 Comment
Mohamed
Mohamed on 22 Apr 2025
Thank you!
It seems that R2018b does not support saveLearnerForCoder and does not support loadLearnerForCoder as well. I used saveCompactModel and loadCompactModel instead. The function I am using is below:
function label = predictTree(features)
%#codegen
persistent treeModel;
if isempty(treeModel)
% Load the saved compact model (codegen-compatible)
treeModel = loadCompactModel('CompactTreeModel.mat');
end
% Predict the label using the loaded model
label = predict(treeModel, features);
I tried several workarounds using the MATLAB function block but I am getting errors unfortunately that I am not understanding.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!