色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于結構體變量建模的介紹和原理

MATLAB ? 來源:djl ? 2019-09-12 09:54 ? 次閱讀

鑒于有不少模型開發工程師缺乏 C 語言的基本概念,我這里大致說一下 C 代碼中的結構體。

首先我們需要知道有結構體類型和結構體變量。

結構體類型在 C 語言中的定義如下:

struct mystruct_T

{

uint8 a;

int16 b;

uint16 c;

};

這里 mystruct_T 就是結構體類型。結構體類型是一種組合數據類型,不同于數組,結構體的元素是可以有不同數據類型的,上面的例子中 a、b、c 的數據類型各不相同。

我們可以像使用基本數據類型一樣使用結構體類型去定義變量,使用結構體類型定義的變量是結構體變量,比如:

mystruct_T mystruct_var;

那么mystruct_var就是一個結構體變量,可以通過如下結構體變量右側加點來訪問結構體變量中的元素,比如:

mystruct_var.a = 30;

或者:

tmp = mystruct_var.c;

這樣,我們就有了結構體類型 mystruct_T 和結構體變量 mystruct_var。

我們做一個假設,如果上述結構體里面的元素 c 不是一個單個元素,而是一個結構體變量,情況將會怎么樣?比如:

struct mystruct_T

{

uint8 a;

int16 b;

substruct_T c;

};

結構體里面還套著一個結構體,于是我們就有了結構體嵌套。

我們在 C 語言中定義變量的時候,可以定義單個變量,也可以定義一個數組,比如:

int8 x[10];

結構體類型同樣也可以用于定義結構體數組,比如

mystruct_T mystruct_array[10]

這樣,我們就有了結構體數組。

下面我們一起看看如何在模型里建模或者配置,讓生成的 C 代碼里出現結構體變量、結構體嵌套和結構體數組。

開始介紹之前,請大家記住兩點:

C 代碼中的結構體變量跟模型中的 Bus 信號相對應

C 代碼中的結構體類型跟模型中的 Bus 對象相對應

一. 結構體變量的代碼實現

有模型如下:

關于結構體變量建模的介紹和原理

數據字典中有 Bus對象 myBus 定義如下:

關于結構體變量建模的介紹和原理

將 Inport 端口的數據類型設置為 myBus,Inport 的外觀發生變化,變成環形。為控制結構體變量的變量名如我們所期望,在信號線上設置信號名 x、y。然后在數據字典中分別定義信號對象 x、y。將 x、y 的數據類型設置為 myBus,如下圖:

關于結構體變量建模的介紹和原理

當然,x、y 的存儲類設置跟非結構體代碼生成一樣,這里分別設置為 ImportedExtern 和 ExportedGlobal。

除此之外,還需要把 BusCreator 的輸出數據類型設置為 myBus,如果你沒做這個設置, Embeded Coder 會提醒你設置。

做好上述設置,以及代碼生成的基本設置之后,Build 模型,代碼就有了,你會發現結構體類型 myBus 的定義如下:

typedef struct

{

real_T a;

real_T b;

real_T c;

} myBus;

變量 y 的定義如下:myBus y;

變量 x 的聲明如下:extern myBus x;

二. 結構體嵌套的代碼實現

在上述例子中的數據字典中再定義一個 Bus 對象 subBus,如下圖:

關于結構體變量建模的介紹和原理

再將 myBus 中的元素 c 的數據類型改為 subBus,模型做相應的調整如下:

關于結構體變量建模的介紹和原理

Build 模型,代碼中 myBus 的定義如下:

typedef struct

{

real_T a;

real_T b;

subBus c;

} myBus;

其中 subBus 定義如下:

typedef struct

{

real_T u;

real_T v;

} subBus;

數據字典中信號對象 x 和 y 的定義跟前面的例子一樣,結構體變量 x 和 y 在代碼中的定義也跟前面的例子一樣,整個算法的實現函數如下:

void nestStructModel_step(void)

{

y.a = K * x.a;

y.b = K * x.b;

y.c.u = K *x.c.u;

y.c.v = K *x.c.v;

}

很顯然,結構體嵌套,對應到模型中,就是 Bus 嵌套。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4798

    瀏覽量

    68714
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28402
  • 結構體
    +關注

    關注

    1

    文章

    130

    瀏覽量

    10852
收藏 人收藏

    評論

    相關推薦

    VirtualLab Fusion應用:用于抑制高衍射級次的角濾波光柵

    ,以抑制不需要的高衍射階數。為此,首先分析了光柵的角度靈敏度。 最后,通過使用 VirtualLab Fusion 進行仿真,顯示了對不期望的高衍射級次的抑制效果。 建模任務 volume
    發表于 12-09 12:51

    結構成員的順序會影響結構的大小嗎

    相同的結構成員,如果把順序調整一下,會不會影響結構的大小? 答案是會的,這主要跟字節對齊有關。 比如這樣的結構
    的頭像 發表于 11-25 16:24 ?206次閱讀

    C語言和C++中結構的區別

    同樣是結構,看看在C語言和C++中有什么區別?
    的頭像 發表于 10-30 15:11 ?262次閱讀

    隧道BIM如何設計和建模

    、協作工作、優化設計,并最大程度地提高項目效率和質量。下面是關于如何設計和建模隧道BIM的詳細內容: 1.數據采集與建模需求確定:在設計之初,需要收集并整合地形、地質、氣象等方面的數據,并確定設計需求和目標。這些數據將為后續BI
    的頭像 發表于 06-04 15:54 ?399次閱讀

    你是否真的了解結構占用了多少字節?

    結構成員所占內存空間大小一般情況下,如果想知道結構成員的內存占用情況需要:1、先用結構在內
    的頭像 發表于 06-04 08:04 ?501次閱讀
    你是否真的了解<b class='flag-5'>結構</b><b class='flag-5'>體</b>占用了多少字節?

    硬件特殊功能寄存器編程思路和RAM使用的問題求解?

    看了一下STM32的庫,對于其中的關于硬件的特殊功能寄存器的設置都是通過:1、定義一個和實際硬件地址相鏡像的全局結構變量。 2、設置結構
    發表于 05-17 12:24

    嵌入式中C語言結構基本實現

    : ? ??在struct 中聲明了一個含有若干新成員的數據類型。 ????tag ?是結構標簽。 ????member-list ?是標準的變量定義,比如 int i; 或者 float f,或者其他
    的頭像 發表于 05-11 08:49 ?1065次閱讀
    嵌入式中C語言<b class='flag-5'>結構</b><b class='flag-5'>體</b>基本實現

    C語言結構史上最詳細的講解【軟件干貨】

    struct結構數據類型 前言 我們知道,在C語言中有一些基本的數據類型,如?char?int?float?long?double?string(c99) 等等數據類型,他們可以表示一些事物
    的頭像 發表于 03-28 17:52 ?789次閱讀

    求助,關于G031ADC結構設置的幾個疑問求解

    本人在使用ADC時想使用多通道模式,所以便在CUBEMX上將十九個通道全部打開(包括三個內部通道),生成代碼以后詳細看了一下結構的配置發現有幾個疑惑, 1.ADC通道分為規則通道和注入通道,那么
    發表于 03-15 07:03

    MCAL的DMA如何使得變量存儲由編譯器自動分配 ?

    (DMA_START_SEC_CONFIG_DATA_ASIL_B_CORE0_256),但是Dma_kChannel_40_TcsConfigRoot結構實際只占用16個字節,請問如何修改配置,使得變量存儲由編譯器自動分配
    發表于 02-02 08:33

    介紹三種建模方式

    據量大,而是指樣本的完備性。還有就是大數據或者AI被專業學者或者行業工程師所詬病的就是,純粹的數據驅動搞不出所以然出來,需要領域知識(即Domain Knowledge)的協助。此外,還有第三種建模方式就是混合驅動,即基礎物理模型加上數據驅動的方式。下文詳細介紹一下三種
    的頭像 發表于 01-23 10:48 ?1957次閱讀

    求助,請問一個結構如何全部定義到 __attribute__ 區域?

    請問一個結構如何全部定義到 __attribute__ 區域? 例如我這里涉及到一些高速計算的緩存,計劃將緩存數據存儲到 __attribute__ 區域。 三個結構 ,每個
    發表于 01-16 07:29

    經典 C 語言編程,結構和聯合體如何共用?

    結構 結構占用的內存大小,首先和編譯器的系統位數有關系,類似于CPU是 64 bits 還是 32 bits 的情形;其次,結構
    的頭像 發表于 01-11 18:24 ?1412次閱讀
    經典 C 語言編程,<b class='flag-5'>結構</b><b class='flag-5'>體</b>和聯合體如何共用?

    使用SEGGER Embedded Studio編譯器發現變量無法自動初始化

    使用SEGGER Embedded Studio編譯器發現變量無法自動初始化, 例如聲明靜態變量static uint8_t i = 0;這種寫法i成了靜態變量,但沒有初始化成功,聲明的結構
    發表于 01-11 14:21

    結構與指針的關系

    在C語言中,結構(Struct)是一種用戶自定義的數據類型,它允許您將不同類型的數據項組合在一起,以便形成一個更復雜的數據結構結構可以
    的頭像 發表于 01-11 08:00 ?1012次閱讀
    <b class='flag-5'>結構</b><b class='flag-5'>體</b>與指針的關系
    主站蜘蛛池模板: 在镜头里被CAO翻了H| 强开少妇嫩苞又嫩又紧九色| 久久中文字幕乱码免费| 三级黄毛片| brazzers情欲狂欢| 久久99re8热在线播放| 亚洲第一综合天堂另类专| 丰满人妻熟女色情A片| 人妻插B视频一区二区三区| 99久久综合国产精品免费| 美女张开大腿| ASIAN大陆明星裸休合成PICS| 美女伊人网| 99亚洲精品| 日本阿v直播在线| 柏木舞子在线| 日本妈妈xxxx| 囯产精品久久久久久久久免费蜜桃 | 秘密教学26我们在做一次吧免费 | 玩50岁四川熟女大白屁股直播| 成人在线免费看片| 日本午夜精品理论片A级APP发布 | ai换脸在线全集观看| 欧美三级黄色大片| 扒开她的黑森林让我添动态图 | 一个人的视频在线观看免费观看| 精品手机在线视频| 在线观看qvod| 欧美成人一区二免费视频| xxx成熟xxx| 舔1V1高H糙汉| 久久 这里只精品 免费| 60岁老年熟妇在线无码| 人人射人人插| 国产偷国产偷亚洲高清app| 一本到道免费线观看| 某上海少妇3P黑人完整版BD| 吃春药后的女教师| 亚洲精品黄色| 免费国产成人| 国产精品内射久久久久欢欢|