91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

MATLAB ? 來源:djl ? 作者:柚籽 ? 2019-09-16 10:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們來聊聊結(jié)構(gòu)體。

E-Coder 在做自動代碼生成的時候,在默認(rèn)情況下,它會把所有的輸入信號定義為一個結(jié)構(gòu)體_U,把所有的輸出信號定義為另一個結(jié)構(gòu)體_Y,把所有的參數(shù)定義為一個結(jié)構(gòu)體_P。雖然這樣的結(jié)構(gòu)體不一定是我們想要的,但至少,說明自動代碼生成是支持結(jié)構(gòu)體的。

本文并不解決“哪些情況下應(yīng)該使用結(jié)構(gòu)體”這個問題,這里來說說:

怎么實現(xiàn)我想要的結(jié)構(gòu)體?

從之前的文章中我們說到,自動生成代碼時,想讓各種信號、參數(shù)定義和聲明采用什么樣的方式,都是通過數(shù)據(jù)對象 (Data Object) 來實現(xiàn)的。那,如果我希望把信號 a ,b,c 或者參數(shù) k1,k2,k3 定義為一個結(jié)構(gòu)體,該怎么實現(xiàn)呢?

構(gòu)造結(jié)構(gòu)體

要得到:

typdef struct {

double k1;

double k2;

double k3;

} kk_type;

kk_type kk={2.0,3.0,4.0};

怎么做:

設(shè)置數(shù)據(jù)對象的Storage Class屬性為 Struct

或者使用Simulink Bus來定義新的結(jié)構(gòu)體類型 outyy

舉個例子

1.新建如下的簡單模型并生成代碼

先看一下 “正常的” 不使用結(jié)構(gòu)體的情況:

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

看下面這張圖,定義好了對應(yīng)的信號數(shù)據(jù)對象 (Simulink.Signal) u1、u2、u3、yy1、yy2、yy3,與參數(shù)數(shù)據(jù)對象(Simulink.Parameter) k1、k2、k3。

通過名字對應(yīng)以及關(guān)聯(lián)操作,實現(xiàn)關(guān)聯(lián),也就是上圖中的藍(lán)色小叉子。具體如何操作以前介紹過。

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

Ctrl + B,生成代碼:

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

2.把參數(shù) k1、k2、k3 放在指定的結(jié)構(gòu)體 kk 里

選中數(shù)據(jù)對象 k1,k2,k3,把 StorageClass 都設(shè)置為 Struct(Custom),并指定結(jié)構(gòu)體名字為 kk。這樣在自動生成代碼時,這幾個參數(shù)會自動放入結(jié)構(gòu)體 kk 中。

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

看到,在生成的代碼里,得到一個新的結(jié)構(gòu)體類型 kk_type:

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

并且,根據(jù)這幾個參數(shù)的值,得到了結(jié)構(gòu)體變量 kk:

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

3.把信號 yy1、yy2、yy3 也放在一個輸出結(jié)構(gòu)體里

剛才的參數(shù)結(jié)構(gòu)體是通過設(shè)置數(shù)據(jù)對象的 StorageClass 為 Struct 來實現(xiàn)的。而現(xiàn)在,以信號為例,使用另一種方式來實現(xiàn)這個目的: Simulink Bus。

a.首先,通過 Simulink Bus 來定義一個新的結(jié)構(gòu)體數(shù)據(jù)類型 outyy:

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

定義這個 Bus 的結(jié)構(gòu),里面的成員名就是最后出現(xiàn)在代碼里的名字:

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

那么此時,一個新的數(shù)據(jù)類型就構(gòu)造好了。將來在生成代碼時,這個新的結(jié)構(gòu)體類型就是這樣:

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

數(shù)據(jù)類型定義好了,接著,我們就要來用它了。

b. 把 Simulink 的三個輸出信號使用 Bus Creator 模塊變成總線信號,取名叫 outStruct:

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

設(shè)置這個 Bus Creator 模塊的數(shù)據(jù)類型為剛定義好的結(jié)構(gòu)體 outyy。另外,還得勾選它為非虛擬總線。那么這樣,它在生成代碼時,就會被當(dāng)做結(jié)構(gòu)體來看:

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

c. 如同之前每一個 double\single 類型的信號一樣,接著,也為 outStruct信號定義一個同名的數(shù)據(jù)對象 outStruct。

在 Simulink 模型上的 outStruct 信號線的屬性界面上勾選關(guān)聯(lián)到這個數(shù)據(jù)對象,得到藍(lán)色小叉子。

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

4. 最后生成代碼

關(guān)于如何定義結(jié)構(gòu)體的分析和介紹

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    關(guān)于MT6901的直線DEMO介紹

    關(guān)于MT6901的直線DEMO介紹
    的頭像 發(fā)表于 01-30 10:54 ?538次閱讀
    <b class='flag-5'>關(guān)于</b>MT6901的直線DEMO<b class='flag-5'>介紹</b>

    【產(chǎn)品介紹】Altair OptiStruct結(jié)構(gòu)分析優(yōu)化軟件

    AltairOptiStruct支持結(jié)構(gòu)分析優(yōu)化OptiStruct是一款久經(jīng)考驗且成熟的現(xiàn)代化結(jié)構(gòu)求解器,它可為線性和非線性分析提供綜合、準(zhǔn)確且可擴(kuò)展的解決方案,適用于多個學(xué)科,包括
    的頭像 發(fā)表于 01-06 17:56 ?1644次閱讀
    【產(chǎn)品<b class='flag-5'>介紹</b>】Altair OptiStruct<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>分析</b>優(yōu)化軟件

    10個例子代碼,C語言結(jié)構(gòu)的高級

    (\"Flag 3: %dn\", f.flag3); return 0; } 在這個例子中,我們使用了位字段來定義一個結(jié)構(gòu),其中每個成員變量都指定了所占用的位數(shù)。這樣
    發(fā)表于 01-05 06:32

    一個經(jīng)典的結(jié)構(gòu)和聯(lián)合體共用的實例

    連用例子: 1、首先定義一個結(jié)構(gòu),內(nèi)部包含聯(lián)合體,如下; #define MAX_SOFTKEY_LEN 4 typedef enum { ENUM_TRANSFER
    發(fā)表于 12-16 07:14

    結(jié)構(gòu)聲明與定義

    符號整數(shù)表示 } 這樣,我們就相當(dāng)于描繪好了一個框架,以后要用的話直接定義一個這種類型的變量就好了。 2、定義 我們剛剛申請了一個名叫Info的結(jié)構(gòu)類型,那么理論上我們可以像聲
    發(fā)表于 12-11 07:52

    typedef結(jié)構(gòu)使用

    雖然結(jié)構(gòu)的出現(xiàn)能夠讓我們有一個更科學(xué)的數(shù)據(jù)結(jié)構(gòu)來管理數(shù)據(jù),但是每次使用結(jié)構(gòu)都需要struct...,未免顯得有些冗長和麻煩。有了type
    發(fā)表于 12-08 07:04

    共用聲明

    還要考慮內(nèi)存對齊的問題。 共用可以類似結(jié)構(gòu)一樣來定義和聲明,但是共用還可以允許不帶名字: union { int i; ch
    發(fā)表于 12-05 07:24

    關(guān)于NFC鎳鋅鐵氧體片的介紹

    關(guān)于NFC鎳鋅鐵氧體片的介紹
    的頭像 發(fā)表于 12-04 10:52 ?459次閱讀
    <b class='flag-5'>關(guān)于</b>NFC鎳鋅鐵氧體片的<b class='flag-5'>介紹</b>

    為什么不建議用匿名結(jié)構(gòu)

    說起匿名結(jié)構(gòu),想必大家第一感覺就是看著好高大上的名字,但實際上也就那樣。 typedef struct { union { struct { uint8_t bit_0:1
    發(fā)表于 12-04 07:39

    使用typede的f優(yōu)勢介紹

    可以讓代碼更加清晰簡潔使用typedef,我們可以在定義一個結(jié)構(gòu)、聯(lián)合、枚舉變量時,省去關(guān)鍵字struct,讓代碼更加簡潔。 typedef struct student { char
    發(fā)表于 11-26 08:15

    C語言結(jié)構(gòu)使用

    有時候需要將不同類型的數(shù)據(jù)組合為一個整體,以便于引用。例如,一名學(xué)生有學(xué)號、姓名、性別、年齡等屬性,如果針對每個屬性都單獨定義一個變量,那么當(dāng)有多名學(xué)生時變量就難以分清。結(jié)構(gòu)就是用來管理不同類
    發(fā)表于 11-12 08:30

    定義IO初始化結(jié)構(gòu)

    由上述IOPORT相關(guān)功能的枚舉類型我們可以知道,在對IOPORT模塊進(jìn)行初始化時需要根據(jù)情況配置它們。因此我們定義一個IOPORT初始化的結(jié)構(gòu)類型IOPORT_Init_t,它的成員包括了由上述所有枚舉類型所聲明的變量,因此
    的頭像 發(fā)表于 07-16 16:26 ?1457次閱讀

    滲壓計在混凝土結(jié)構(gòu)中的安裝指南

    在現(xiàn)代土木工程和巖土工程中,滲壓計是監(jiān)測混凝土結(jié)構(gòu)體內(nèi)孔隙水壓力變化的重要工具。南京峟思公司生產(chǎn)的滲壓計因其高精度和可靠性而被廣泛應(yīng)用于各種工程監(jiān)測項目中。一、滲壓計在混凝土結(jié)構(gòu)中的應(yīng)用價值滲壓計
    的頭像 發(fā)表于 05-28 10:55 ?644次閱讀
    滲壓計在混凝土<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>中的安裝指南

    LASCAD應(yīng)用:動態(tài)多模分析和調(diào)Q運轉(zhuǎn)模擬

    目錄 動態(tài)多模分析和調(diào)Q運轉(zhuǎn)模擬1 1.介紹1 2.激光器連續(xù)輸出時輸出功率,模式競爭,和光束質(zhì)量的模擬2 3.Q開關(guān)運轉(zhuǎn)模擬6 4.光闌影響模擬10 5.結(jié)論12 1.介紹 動態(tài)多模分析
    發(fā)表于 05-19 08:52

    C語言中結(jié)構(gòu)與聯(lián)合體的深度解析:內(nèi)存布局與應(yīng)用場景

    在于對內(nèi)存的極致操控。結(jié)構(gòu)構(gòu)建數(shù)據(jù)實體,聯(lián)合體實現(xiàn)內(nèi)存復(fù)用,二者的組合使用能創(chuàng)造出強大的數(shù)據(jù)結(jié)構(gòu)。掌握它們的底層原理,配合內(nèi)存分析工具(如Valgrind、GDB),將助你在嵌入式開
    發(fā)表于 04-08 09:18