simulink模块库中无保留特定位数小数的相关模块,因此需要通过自定义matlab function来实现。但是在simulink中直接调用matlab的系统函数会出现"Function ‘syms’ not supported for code generation"的错误。具体解决方案如下:

1 创建myFormat.m文件

function out  = myFormat(in)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%保留特定位数的小数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
syms a;
a=roundn(in,-4);%保留4位小数
out  = a;
end

2 在simulink中自定义matlab function中调用该方法

function out = myFloor(in)
coder.extrinsic('myFormat')
out = 0;
out = myFormat(in);

该方法同样可以实现simulink仿真中调用matlab脚本。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐