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

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)于如何定義結(jié)構(gòu)體的分析和介紹

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

從之前的文章中我們說到,自動(dòng)生成代碼時(shí),想讓各種信號(hào)、參數(shù)定義和聲明采用什么樣的方式,都是通過數(shù)據(jù)對(duì)象 (Data Object) 來實(shí)現(xiàn)的。那,如果我希望把信號(hào) a ,b,c 或者參數(shù) k1,k2,k3 定義為一個(gè)結(jié)構(gòu)體,該怎么實(shí)現(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ù)對(duì)象的Storage Class屬性為 Struct

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

舉個(gè)例子

1.新建如下的簡(jiǎn)單模型并生成代碼

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

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

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

通過名字對(duì)應(yīng)以及關(guān)聯(lián)操作,實(shí)現(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ù)對(duì)象 k1,k2,k3,把 StorageClass 都設(shè)置為 Struct(Custom),并指定結(jié)構(gòu)體名字為 kk。這樣在自動(dòng)生成代碼時(shí),這幾個(gè)參數(shù)會(huì)自動(dòng)放入結(jié)構(gòu)體 kk 中。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

b. 把 Simulink 的三個(gè)輸出信號(hào)使用 Bus Creator 模塊變成總線信號(hào),取名叫 outStruct:

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

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

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

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

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

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

4. 最后生成代碼

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

    關(guān)于MT6901的直線DEMO介紹
    的頭像 發(fā)表于 01-30 10:54 ?454次閱讀
    <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)考驗(yàn)且成熟的現(xiàn)代化結(jié)構(gòu)求解器,它可為線性和非線性分析提供綜合、準(zhǔn)確且可擴(kuò)展的解決方案,適用于多個(gè)學(xué)科,包括
    的頭像 發(fā)表于 01-06 17:56 ?1473次閱讀
    【產(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個(gè)例子代碼,C語言結(jié)構(gòu)的高級(jí)

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

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

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

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

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

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

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

    共用聲明

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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