同步网站内容怎么做,东莞网络企业推广,电子商务网站建设与管理考试题,网络推广公司运作文章目录
前言
背景介绍
问题描述
分析排查
解决方案
总结归纳 前言 见《研发日记#xff0c;Matlab/Simulink避坑指南(三)——向上取整Bug》 见《研发日记#xff0c;Matlab/Simulink避坑指南(四)——transpose()转置函数Bug》 见《研发日记#xff0c;Matlab/Simuli…文章目录
前言
背景介绍
问题描述
分析排查
解决方案
总结归纳 前言 见《研发日记Matlab/Simulink避坑指南(三)——向上取整Bug》 见《研发日记Matlab/Simulink避坑指南(四)——transpose()转置函数Bug》 见《研发日记Matlab/Simulink避坑指南(五)——CAN解包 DLC Bug》 见《研发日记Matlab/Simulink避坑指南(六)——字节分割Bug》 见《研发日记Matlab/Simulink避坑指南(七)——数据溢出钳位Bug》 背景介绍 在一个嵌入式软件项目中需要对一个信号进行分段处理。思路是使用Simulink中的Matlab Funcyion模块采用else if的结构进行处理示例如下
function y fcn(u)if u 0y -int16(u);else if u 10y 10*int16(u);else if u 20y 20*int16(u);else if u 30 y 30*int16(u);else if u 40 y 40*int16(u);else y int16(u);end
end
end
end
end 问题描述 按照上述示例程序运行功能都是正常的但是代码中一直有标红的警告示例如下 分析排查 看警告的提示信息意思是代码的排版有问题按照提示对代码进行修改示例如下 这样标红的警告消失说明前面确实是代码排版问题。看上面的if else结构Matlab认可的是这种逐层嵌套的框架而不是C语言中惯用的else if并列分支框架。 解决方案 如果采用上述逐层嵌套的结构需要经常调整前后if和end的对齐问题而且这种庞杂的框架难免会增加代码出现逻辑错误的可能性。于是我们查阅Matlab官方关于if else的文档找到了类似C语言中并列的分支结构elseif是一个专用的关键词中间没有空格分隔示例如下 按照上述语法对我们的算法进行调整示例如下 这样没有出现标红的警告也没有引入新的问题程序运行起来功能也符合要求 Bug修复完工。 总结归纳 Matlab中的else if并列分支结构与C语言中的有一个细微区别。C语言中是else if作为一个关键词充当一个语法结构但是在Matlab中如果中间有空格会被认为是两个关键词按照两个语法结构被对待。所以在Matlab中要实现和C语言中一样的效果就要去掉else和if之间的空格。这是两种编程语言在不同使用环境中的一点差别需要开发者自己留意。 版权声明原创文章转载和引用请注明出处和链接侵权必究 上述例程使用的Demo工程可以到笔者的主页查找和下载。