0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于代码替换这个隐藏技能的介绍和分享

MATLAB 来源:djl 作者:董淑成 2019-09-16 17:47 次阅读

不要对自动生成的代码做任何手工修改,凡是想在代码中实现的,一定要通过模型和相关配置实现。

是的,我依然坚持这条坚持了近10年的原则。

那么问题来了,有人说有些算法速度太慢,比如sine运算,如果使用math库里提供的sine运算,可能很多应用都接受不了,怎么破?

我们今天就来看看工具提供给我们的代码替换功能。

通常,在工程上,对于速度要求比较高的应用里,我们不会使用数学库里的sin()做正弦运算的,更多的时候,我们会使用查表的方式,把信号变化范围你的数据做成表格,做sine运算时就调用这张表格。我们这里也假设用户可以自己写一个查表函数,函数原型如下:

double mysin(double x)

也可能会有人告诉我单片机上我们也不适用double数据类型的,好吧,我这里偷懒,就不再去设置数据类型了,设置数据类型这事大家都会做。

假设有模型如下:

关于代码替换这个隐藏技能的介绍和分享

选择系统目标文件为ert.tlc,默认设置下,生成的代码如下:

testcr_Y.Out1 = sin(testcr_U.In1);

我们的目标是:

将代码中的sin()替换成mysine()。

如何操作?

1. 首先做MATLAB命令窗里运行如下命令:crtool

关于代码替换这个隐藏技能的介绍和分享

2. 在上述界面下,Tables List里面增加myTable,然后鼠标右键在myTable上选择New Entry,继续选择Math Function,然后就是做Math Function列表里选择sin,在最右侧的面板里设置Replacement prototype,比如我们这里将名字设置为mysine。

3. 做完上述设置之后,保存为myTable.m。

4. 再使用上述界面的File菜单下的Generate Registration File生成注册文件myTableReg。

5. 回到MATLAB命令窗,运行sl_refresh_customizations。

至此,我们已经创建了代码替换表,并且将其注册到MATLAB系统。

下面打开模型文件,只需做如下设置:

关于代码替换这个隐藏技能的介绍和分享

Configuration Parameters面板下选择Code Generation,然后选择Code replacement library,选中myTableReg。

现在,再去生成代码,你将得到的就是这样一行代码:

testcr_Y.Out1 = mysine(testcr_U.In1);

这里面需要注意的是路径问题不要出错,还有函数的形成以及返回值的类型要和模型里的相关模块保持一致。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7048

    浏览量

    89076
  • 信号
    +关注

    关注

    11

    文章

    2791

    浏览量

    76807
  • 代码
    +关注

    关注

    30

    文章

    4790

    浏览量

    68654
收藏 人收藏

    评论

    相关推荐

    晶振替换指南

    在频率相同的情况下,不同尺寸的晶振替换是可行的。凯擎小妹建议您全面考虑各项技术参数和应用要求,以确保替换后的系统可以稳定可靠的运行。
    的头像 发表于 12-23 18:07 155次阅读
    晶振<b class='flag-5'>替换</b>指南

    若想使用ADS8422IBPFBT是要怎么替换或运作?

    由于近期要做关于ANC的研究,欲购TMS320C6713 DSP Starter Kit (DSK)来实作,考虑使用ADS8422IBPFBT作为ADC,但是原本似乎就有内建AIC23 CODEC
    发表于 12-13 11:13

    TAS5630PHD这个型号跟TAS5630BPHD是不是一样?可以直接替换吗?

    TAS5630PHD这个型号跟\'TAS5630BPHD是不是一样?可以直接替换?谢谢
    发表于 10-25 06:23

    代码整洁之道-大师眼中的整洁代码是什么样

    模糊,带着这个问题,本人读完了世界软件开发大师马丁的《代码整洁之道》这本书,来了解下大师眼中的整洁代码画像是什么样的,相信能给你带来不一样的理解和感悟。 关于整洁
    的头像 发表于 09-09 16:30 348次阅读
    <b class='flag-5'>代码</b>整洁之道-大师眼中的整洁<b class='flag-5'>代码</b>是什么样

    用OPA2320替换OPA2333这个系列的可以不?

    请问一下我用OPA2320替换OPA2333这个系列的可以不?
    发表于 09-04 08:23

    GD32如何替换STM32

    GD32替换Stm32注意事项
    发表于 08-23 11:31 4次下载

    20.0-电磁杆的组装和实物介绍这个是就是你想要的“-智能车电磁组 电磁循迹小车

    电子设计大赛20.0-电磁杆的组装和实物介绍这个是就是你想要的“-智能车电磁组 电磁循迹小车 电磁循迹 电磁循迹小车代码 电磁杆的制作 电磁杆原理图PCB设计
    的头像 发表于 08-20 11:07 445次阅读
    20.0-电磁杆的组装和实物<b class='flag-5'>介绍</b>“<b class='flag-5'>这个</b>是就是你想要的“-智能车电磁组 电磁循迹小车

    相同贴片大小电容可以替换吗?

    相同贴片大小电容是否可以替换,主要取决于电容的具体参数(如容量、耐压值等)以及电路的具体需求。以下是对这一问题的详细分析: 一、电容替换的基本原则 封装兼容性:相同封装的电容在物理尺寸上是兼容的,但
    的头像 发表于 08-12 17:34 849次阅读

    如何通过SOLIDWORKS教育版提高学生技能培养未来人才?

    在当今这个科技日新月异的时代,掌握先进的数字化工具已经成为了一项需备的技能。作为一款功能强大的3D CAD软件,SOLIDWORKS教育版正是一个帮助学生提升技能、培养未来人才的重要工具。那么,如何通过SOLIDWORKS教育版
    的头像 发表于 06-14 17:51 694次阅读
    如何通过SOLIDWORKS教育版提高学生<b class='flag-5'>技能</b>培养未来人才?

    一文看懂直插大功率电感能用贴片电感替换

    一文看懂直插大功率电感能用贴片电感替换吗 编辑:谷景电子 直插大功率电感与贴片电感是否可以替换这个问题最近被咨询的比较多。可能是因为功率电感和贴片电感在外观上具有一定的相似性,所以大家才这样
    的头像 发表于 06-13 20:20 389次阅读

    关于STM32 DMAMUX模块具体的应用示例代码

    有人通过公众号微信留言,询问是否有关于STM32 DMAMUX模块具体的应用示例代码。同时,个人也发现,虽然STM32片内的DMAMUX不是什么新模块,似乎还是很多人并不太熟悉。这里借机聊聊这方面的内容,重点演示相关功能的实现,以供参考。
    的头像 发表于 03-25 09:15 2449次阅读
    <b class='flag-5'>关于</b>STM32 DMAMUX模块具体的应用示例<b class='flag-5'>代码</b>

    微软“数字技能赋能”项目拓展在华合作

    微软近日宣布,与中国教育发展基金会和全国高等院校计算机基础教育研究会携手合作,共同推进“数字技能赋能”项目。此次合作旨在将微软在智能技术、绿色数字技能、数据处理和可视化分析以及低代码开发等领域的专长,与中国的教育资源相结合,为职
    的头像 发表于 03-22 09:19 539次阅读

    使用脚本节点matlab script时,如何隐藏MATLAB command window这个窗口?

    在labview里面使用脚本节点matlab script时,如何隐藏MATLAB command window这个窗口?
    发表于 03-15 15:15

    电感坏了怎么替换

    电子发烧友网站提供《电感坏了怎么替换.docx》资料免费下载
    发表于 01-23 10:05 0次下载

    一文看懂电感可以用大的替换小的吗

    需要尽快更换电感。那么,电路中的电感可不可以用大电感替换小电感呢?今天我们就来讨论一下这个问题。 是不是可以用大电感来替换小电感,我们还是要考虑多个因素: 1、封装大小上:因为电路板给电感的空间位置是一定的,如果
    的头像 发表于 01-13 21:56 833次阅读