0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于一種實(shí)現(xiàn)條件編譯的建模方法分析和介紹

MATLAB ? 來(lái)源:djl ? 作者:董淑成 ? 2019-09-16 15:21 ? 次閱讀

上次介紹過(guò)可以使用Variant Subsystem或者M(jìn)odel Variant實(shí)現(xiàn)帶有條件編譯的代碼(條件編譯助力Simulink模型平臺(tái)化開(kāi)發(fā))。最近了解到,從MATLAB R2016a開(kāi)始,又有一種新的方式可以實(shí)現(xiàn)C代碼中的條件編譯。這就是Variant Sourc模塊的使用。

關(guān)于一種實(shí)現(xiàn)條件編譯的建模方法分析和介紹

假設(shè)有如下模型:

關(guān)于一種實(shí)現(xiàn)條件編譯的建模方法分析和介紹

雙擊Variant Source模塊,可以看到如下配置界面:

關(guān)于一種實(shí)現(xiàn)條件編譯的建模方法分析和介紹

不難看出,除了要定義Simulink Variant對(duì)象K1、K2之外,還需要勾上Analyze all choices during update diagram and generate prepropcessor conditionals選項(xiàng)。顯然,如果K==1條件成立,則Port 1分支對(duì)應(yīng)的代碼被編譯,如果K==2,則Port 2分支對(duì)應(yīng)的代碼被編譯。這里的K可以定義為Simulink Parameter對(duì)象,Storage Class定義為Define(Custom),并且需要指定宏定義的文件。

如此設(shè)置之下,得到的模型算法實(shí)現(xiàn)函數(shù)如下:

voidtestvariantSource_step(void)

{

real_T rtb_VariantMerge_For_Variant_So;

#ifK1

rtb_VariantMerge_For_Variant_So = u1 + u2;

#endif

#ifK2

rtb_VariantMerge_For_Variant_So = u3 + u4;

#endif

y = rtb_VariantMerge_For_Variant_So;

}

這種方式實(shí)現(xiàn)帶有條件編譯的代碼也非常簡(jiǎn)單,條件編譯的好處可以通過(guò)控制宏定義K控制需要編譯哪部分代碼,那么,如果不設(shè)置條件編譯呢?

上述模型中,如果不再勾選Analyze all choices during update diagram and generate prepropcessor conditionals選項(xiàng),我們得到如下代碼:

voidtestvariantSource_step(void)

{

y = u1 + u2;

}

代碼中只有當(dāng)前參數(shù)條件下有效算法的代碼。

跟上次介紹的條件編譯相比,實(shí)現(xiàn)方式不同,應(yīng)用場(chǎng)景也可能不同,如何取舍,這里就不去分析了。但是,在基于模型的開(kāi)發(fā)模式下,到底在模型級(jí)別上做選擇,還是通過(guò)C代碼級(jí)別的條件編譯做選擇,這是個(gè)值得我們思考的問(wèn)題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68616
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    657

    瀏覽量

    32872
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    仿真分析誤差來(lái)源及減少建模誤差的方法

    、建模誤差 建模誤差是仿真分析中最常見(jiàn)的誤差來(lái)源之。它主要源于物理系統(tǒng)與其數(shù)學(xué)模型之間的差異。在建模
    的頭像 發(fā)表于 12-24 09:52 ?256次閱讀
    仿真<b class='flag-5'>分析</b>誤差來(lái)源及減少<b class='flag-5'>建模</b>誤差的<b class='flag-5'>方法</b>

    VirtualLab:系統(tǒng)建模分析

    ,系統(tǒng)建模分析器。本文檔介紹該工具的使用方法。 系統(tǒng)建模分析器 如何運(yùn)行
    發(fā)表于 12-19 12:36

    一種面向飛行試驗(yàn)的數(shù)據(jù)融合框架

    天地氣動(dòng)數(shù)據(jù)致性,針對(duì)某外形飛行試驗(yàn)數(shù)據(jù)開(kāi)展了典型對(duì)象的天地氣動(dòng)數(shù)據(jù)融合方法研究。結(jié)合數(shù)據(jù)挖掘的隨機(jī)森林方法,本文提出了一種面向飛行試驗(yàn)的數(shù)據(jù)融合框架,通過(guò)引入地面風(fēng)洞試驗(yàn)氣動(dòng)數(shù)據(jù),
    的頭像 發(fā)表于 11-27 11:34 ?226次閱讀
    <b class='flag-5'>一種</b>面向飛行試驗(yàn)的數(shù)據(jù)融合框架

    一種利用CSD16327Q3實(shí)現(xiàn)企業(yè)固態(tài)硬盤鉭電容短路保護(hù)的方法

    電子發(fā)燒友網(wǎng)站提供《一種利用CSD16327Q3實(shí)現(xiàn)企業(yè)固態(tài)硬盤鉭電容短路保護(hù)的方法.pdf》資料免費(fèi)下載
    發(fā)表于 10-25 10:22 ?0次下載
    <b class='flag-5'>一種</b>利用CSD16327Q3<b class='flag-5'>實(shí)現(xiàn)</b>企業(yè)固態(tài)硬盤鉭電容短路保護(hù)的<b class='flag-5'>方法</b>

    一種簡(jiǎn)單高效配置FPGA的方法

    本文描述了一種簡(jiǎn)單高效配置FPGA的方法,該方法利用微處理器從串行外圍接口(SPI)閃存配置FPGA設(shè)備。這種方法減少了硬件組件、板空間和成本。
    的頭像 發(fā)表于 10-24 14:57 ?604次閱讀
    <b class='flag-5'>一種</b>簡(jiǎn)單高效配置FPGA的<b class='flag-5'>方法</b>

    linux驅(qū)動(dòng)程序的編譯方法是什么

    Linux驅(qū)動(dòng)程序的編譯方法主要包括兩: 與內(nèi)核編譯編譯成獨(dú)立的內(nèi)核模塊 。以下是對(duì)
    的頭像 發(fā)表于 08-30 14:46 ?577次閱讀

    LIDAR激光雷達(dá)逆向建模能用到revit當(dāng)中嗎

    LIDAR激光雷達(dá)逆向建模一種利用激光雷達(dá)技術(shù)獲取物體表面數(shù)據(jù),然后通過(guò)計(jì)算機(jī)軟件進(jìn)行建模方法。在建筑行業(yè)中,這種方法可以用于建筑物的三
    的頭像 發(fā)表于 08-29 17:23 ?548次閱讀

    對(duì)放大電路的分析方法介紹

    放大電路是電子技術(shù)中非常重要的組成部分,它廣泛應(yīng)用于信號(hào)處理、通信、測(cè)量等領(lǐng)域。對(duì)于放大電路的分析,通??梢苑譃橹绷?b class='flag-5'>分析和交流分析情況。下面我們將
    的頭像 發(fā)表于 08-07 10:08 ?637次閱讀

    一種無(wú)透鏡成像的新方法

    使用OAM-HHG EUV光束對(duì)高度周期性結(jié)構(gòu)進(jìn)行成像的EUV聚光顯微鏡 為了研究微電子或光子元件中的納米級(jí)圖案,一種基于無(wú)透鏡成像的新方法可以實(shí)現(xiàn)近乎完美的高分辨率顯微鏡。 層析成像是一種
    的頭像 發(fā)表于 07-19 06:20 ?384次閱讀
    <b class='flag-5'>一種</b>無(wú)透鏡成像的新<b class='flag-5'>方法</b>

    rup是一種什么模型

    RUP(Rational Unified Process,統(tǒng)建模語(yǔ)言)是一種軟件開(kāi)發(fā)過(guò)程模型,它是一種迭代和增量的軟件開(kāi)發(fā)方法。RUP是由
    的頭像 發(fā)表于 07-09 10:13 ?1265次閱讀

    神經(jīng)網(wǎng)絡(luò)在數(shù)學(xué)建模中的應(yīng)用

    數(shù)學(xué)建模一種利用數(shù)學(xué)方法和工具來(lái)描述和分析現(xiàn)實(shí)世界問(wèn)題的過(guò)程。神經(jīng)網(wǎng)絡(luò)是一種模擬人腦神經(jīng)元結(jié)構(gòu)和功能的計(jì)算模型,可以用于解決各種復(fù)雜問(wèn)題。
    的頭像 發(fā)表于 07-02 11:29 ?947次閱讀

    放大電路有哪三基本分析方法?舉例說(shuō)明

    放大電路是電子電路的重要組成部分,它起到放大信號(hào)的作用。在設(shè)計(jì)和分析放大電路時(shí),有三基本的分析方法:傳輸特性分析、小信號(hào)
    的頭像 發(fā)表于 02-25 15:56 ?3226次閱讀

    gis建模與空間分析的區(qū)別

    GIS建模與空間分析是地理信息系統(tǒng)(GIS)領(lǐng)域中兩個(gè)重要的概念,它們雖然有定的聯(lián)系,但在目的、步驟和應(yīng)用方面存在明顯的區(qū)別。本文將從理論和實(shí)際應(yīng)用的角度,詳盡、詳實(shí)、細(xì)致地對(duì)GIS建模
    的頭像 發(fā)表于 02-25 14:57 ?954次閱讀

    介紹建模方式

    據(jù)量大,而是指樣本的完備性。還有就是大數(shù)據(jù)或者AI被專業(yè)學(xué)者或者行業(yè)工程師所詬病的就是,純粹的數(shù)據(jù)驅(qū)動(dòng)搞不出所以然出來(lái),需要領(lǐng)域知識(shí)(即Domain Knowledge)的協(xié)助。此外,還有第三建模方式就是混合驅(qū)動(dòng),即基礎(chǔ)物理模型加上數(shù)據(jù)驅(qū)動(dòng)的方式。下文詳細(xì)
    的頭像 發(fā)表于 01-23 10:48 ?1884次閱讀

    一種簡(jiǎn)單易行的可編程振蕩器構(gòu)建方法

    本文介紹一種簡(jiǎn)單易行的可編程振蕩器構(gòu)建方法,其中振蕩頻率和幅度可以通過(guò)使用digiPOT來(lái)彼此獨(dú)立地調(diào)節(jié)。
    發(fā)表于 01-15 10:05 ?241次閱讀
    <b class='flag-5'>一種</b>簡(jiǎn)單易行的可編程振蕩器構(gòu)建<b class='flag-5'>方法</b>