日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 传输速率,处理速率转换- MATLAB Simulink- MathWorks 中国

發布時間:2023/12/3 循环神经网络 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 传输速率,处理速率转换- MATLAB Simulink- MathWorks 中国 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

示例模型

打開示例模型 rtwdemo_ratetrans。這種多速率、多任務模型包含幾個在不同模式下運行的 Rate Transition 模塊。

open_system('rtwdemo_ratetrans');

set_param('rtwdemo_ratetrans','SystemTargetFile','ert.tlc');

set_param('rtwdemo_ratetrans','GenerateComments', 'Off');

將 Rate Transition 模塊的代碼分離出來

在 Configuration Parameters 對話框中,Rate Transition block code 參數設置為 Function。為模型生成代碼。代碼位于文件 rtwdemo_ratetrans.c 和 rtwdemo_ratetrans.h 中。

currentDir = pwd;

[~,cgDir] = rtwdemodir();

rtwbuild('rtwdemo_ratetrans');

### Starting build procedure for: rtwdemo_ratetrans

### Successful completion of build procedure for: rtwdemo_ratetrans

Build Summary

Top model targets built:

Model Action Rebuild Reason

==================================================================================================

rtwdemo_ratetrans Code generated and compiled Code generation information file does not exist.

1 of 1 models built (0 models already up to date)

Build duration: 0h 0m 18.871s

hfile=fullfile(cgDir, 'rtwdemo_ratetrans_ert_rtw','rtwdemo_ratetrans.h');

rtwdemodbtype(hfile,'typedef struct {','} DW;', 1, 1);

typedef struct {

real_T OutportBufferForOut3[20];

real_T Integrator1_DSTATE[20];

real_T Integrator2_DSTATE[20];

real_T Integrator3_DSTATE[20];

real_T Integrator1_PREV_U[20];

real_T Integrator2_PREV_U[20];

real_T Integrator3_PREV_U[20];

uint32_T Algorithm_PREV_T;

struct {

uint_T Algorithm_RESET_ELAPS_T:1;

} bitsForTID1;

uint8_T Integrator1_SYSTEM_ENABLE;

uint8_T Integrator2_SYSTEM_ENABLE;

uint8_T Integrator3_SYSTEM_ENABLE;

} DW;

對于 Rate Transition 模塊,狀態數據不在全局狀態結構體 DW_rtwdemo_ratetrans_T 中。這些數據在文件 rtwdemo_ratetrans_rtb.h 內專門的結構體中。

以下代碼包含在文件 rtwdemo_ratetrans.c 中。

cfile=fullfile(cgDir, 'rtwdemo_ratetrans_ert_rtw','rtwdemo_ratetrans.c');

rtwdemodbtype(cfile,'void rtwdemo_ratetrans_step0','void rtwdemo_ratetrans_terminate(void)', 1, 0);

void rtwdemo_ratetrans_step0(void)

{

(rtM->Timing.RateInteraction.TID0_1)++;

if ((rtM->Timing.RateInteraction.TID0_1) > 1) {

rtM->Timing.RateInteraction.TID0_1 = 0;

}

rtwdemo_rate_DetAndIntegS2F_get(rtY.Out1);

rtwdemo_ratetr_IntegOnlyS2F_get(rtY.Out2);

memcpy(&rtY.Out3[0], &rtDW.OutportBufferForOut3[0], 20U * sizeof(real_T));

rtwdemo_rate_DetAndIntegF2S_set(rtU.In1);

rtwdemo_ratetr_IntegOnlyF2S_set(rtU.In2);

}

void rtwdemo_ratetrans_step1(void)

{

real_T rtb_DetAndIntegF2S[20];

real_T rtb_IntegOnlyF2S[20];

real_T tmp;

int32_T i;

uint32_T Algorithm_ELAPS_T;

rtwdemo_rate_DetAndIntegF2S_get(rtb_DetAndIntegF2S);

rtwdemo_ratetr_IntegOnlyF2S_get(rtb_IntegOnlyF2S);

if (rtDW.bitsForTID1.Algorithm_RESET_ELAPS_T) {

Algorithm_ELAPS_T = 0U;

} else {

Algorithm_ELAPS_T = rtM->Timing.clockTick1 - rtDW.Algorithm_PREV_T;

}

rtDW.Algorithm_PREV_T = rtM->Timing.clockTick1;

rtDW.bitsForTID1.Algorithm_RESET_ELAPS_T = false;

tmp = 0.001 * (real_T)Algorithm_ELAPS_T;

for (i = 0; i < 20; i++) {

if (rtDW.Integrator1_SYSTEM_ENABLE == 0) {

rtDW.Integrator1_DSTATE[i] += tmp * rtDW.Integrator1_PREV_U[i];

}

if (rtDW.Integrator2_SYSTEM_ENABLE == 0) {

rtDW.Integrator2_DSTATE[i] += tmp * rtDW.Integrator2_PREV_U[i];

}

if (rtDW.Integrator3_SYSTEM_ENABLE == 0) {

rtDW.Integrator3_DSTATE[i] += tmp * rtDW.Integrator3_PREV_U[i];

}

rtDW.OutportBufferForOut3[i] = rtDW.Integrator3_DSTATE[i];

rtDW.Integrator1_PREV_U[i] = rtb_DetAndIntegF2S[i];

rtDW.Integrator2_PREV_U[i] = rtb_IntegOnlyF2S[i];

rtDW.Integrator3_PREV_U[i] = rtU.In3[i];

}

rtDW.Integrator1_SYSTEM_ENABLE = 0U;

rtDW.Integrator2_SYSTEM_ENABLE = 0U;

rtDW.Integrator3_SYSTEM_ENABLE = 0U;

rtwdemo_rate_DetAndIntegS2F_set(rtDW.Integrator1_DSTATE);

rtwdemo_ratetr_IntegOnlyS2F_set(rtDW.Integrator2_DSTATE);

rtM->Timing.clockTick1++;

}

void rtwdemo_ratetrans_initialize(void)

{

rtDW.bitsForTID1.Algorithm_RESET_ELAPS_T = true;

rtDW.Integrator1_SYSTEM_ENABLE = 1U;

rtDW.Integrator2_SYSTEM_ENABLE = 1U;

rtDW.Integrator3_SYSTEM_ENABLE = 1U;

}

rtwdemo_ratetrans_step0 和 rtwdemo_ratetrans_step1 函數包含對 get 和 set 函數的調用。這些函數包含 Rate Transition 模塊代碼。這些函數定義位于文件 rtwdemo_ratetrans_rtb.c 中。

為 Rate Transition 模塊生成內聯代碼

在 Configuration Parameters 對話框中,將 Rate Transition block code 參數設置為 Inline。為模型生成代碼。代碼位于文件 rtwdemo_ratetrans.c 和 rtwdemo_ratetrans.h 中。

set_param('rtwdemo_ratetrans','RateTransitionBlockCode','Inline');

rtwbuild('rtwdemo_ratetrans')

### Starting build procedure for: rtwdemo_ratetrans

### Successful completion of build procedure for: rtwdemo_ratetrans

Build Summary

Top model targets built:

Model Action Rebuild Reason

=================================================================================

rtwdemo_ratetrans Code generated and compiled Generated code was out of date.

1 of 1 models built (0 models already up to date)

Build duration: 0h 0m 16.174s

以下代碼現在位于文件 rtwdemo_ratetrans.h 中。

hfile=fullfile(cgDir, 'rtwdemo_ratetrans_ert_rtw','rtwdemo_ratetrans.h');

rtwdemodbtype(hfile, 'typedef struct {', '} DW;', 1, 1);

typedef struct {

real_T Integrator1_DSTATE[20];

real_T Integrator2_DSTATE[20];

real_T Integrator3_DSTATE[20];

real_T DetAndIntegS2F_Buffer0[20];

volatile real_T IntegOnlyS2F_Buffer[40];

real_T DetAndIntegF2S_Buffer[20];

volatile real_T IntegOnlyF2S_Buffer0[20];

real_T Integrator1_PREV_U[20];

real_T Integrator2_PREV_U[20];

real_T Integrator3_PREV_U[20];

uint32_T Algorithm_PREV_T;

struct {

uint_T Algorithm_RESET_ELAPS_T:1;

} bitsForTID1;

volatile int8_T IntegOnlyS2F_ActiveBufIdx;

volatile int8_T IntegOnlyF2S_semaphoreTaken;

uint8_T Integrator1_SYSTEM_ENABLE;

uint8_T Integrator2_SYSTEM_ENABLE;

uint8_T Integrator3_SYSTEM_ENABLE;

} DW;

對于 Rate Transition 模塊,狀態數據不在全局狀態結構體 DW_rtwdemo_ratetrans_T 中。這些數據在文件 rtwdemo_ratetrans_rtb.h 內專門的結構體中。

以下代碼現在位于文件 rtwdemo_ratetrans_rtb.c 中。

cfile=fullfile(cgDir, 'rtwdemo_ratetrans_ert_rtw','rtwdemo_ratetrans.c');

rtwdemodbtype(cfile,'void rtwdemo_ratetrans_step0','void rtwdemo_ratetrans_terminate(void)', 1, 0);

void rtwdemo_ratetrans_step0(void)

{

int32_T i;

int32_T i_0;

(rtM->Timing.RateInteraction.TID0_1)++;

if ((rtM->Timing.RateInteraction.TID0_1) > 1) {

rtM->Timing.RateInteraction.TID0_1 = 0;

}

if (rtM->Timing.RateInteraction.TID0_1 == 1) {

memcpy(&rtY.Out1[0], &rtDW.DetAndIntegS2F_Buffer0[0], 20U * sizeof(real_T));

}

i = rtDW.IntegOnlyS2F_ActiveBufIdx * 20;

for (i_0 = 0; i_0 < 20; i_0++) {

rtY.Out2[i_0] = rtDW.IntegOnlyS2F_Buffer[i_0 + i];

}

if (rtM->Timing.RateInteraction.TID0_1 == 1) {

memcpy(&rtDW.DetAndIntegF2S_Buffer[0], &rtU.In1[0], 20U * sizeof(real_T));

}

if (rtDW.IntegOnlyF2S_semaphoreTaken == 0) {

for (i = 0; i < 20; i++) {

rtDW.IntegOnlyF2S_Buffer0[i] = rtU.In2[i];

}

}

}

void rtwdemo_ratetrans_step1(void)

{

real_T rtb_IntegOnlyF2S[20];

real_T tmp;

int32_T i;

uint32_T Algorithm_ELAPS_T;

rtDW.IntegOnlyF2S_semaphoreTaken = 1;

for (i = 0; i < 20; i++) {

rtb_IntegOnlyF2S[i] = rtDW.IntegOnlyF2S_Buffer0[i];

}

rtDW.IntegOnlyF2S_semaphoreTaken = 0;

if (rtDW.bitsForTID1.Algorithm_RESET_ELAPS_T) {

Algorithm_ELAPS_T = 0U;

} else {

Algorithm_ELAPS_T = rtM->Timing.clockTick1 - rtDW.Algorithm_PREV_T;

}

rtDW.Algorithm_PREV_T = rtM->Timing.clockTick1;

rtDW.bitsForTID1.Algorithm_RESET_ELAPS_T = false;

tmp = 0.001 * (real_T)Algorithm_ELAPS_T;

for (i = 0; i < 20; i++) {

if (rtDW.Integrator1_SYSTEM_ENABLE == 0) {

rtDW.Integrator1_DSTATE[i] += tmp * rtDW.Integrator1_PREV_U[i];

}

if (rtDW.Integrator2_SYSTEM_ENABLE == 0) {

rtDW.Integrator2_DSTATE[i] += tmp * rtDW.Integrator2_PREV_U[i];

}

if (rtDW.Integrator3_SYSTEM_ENABLE != 0) {

rtY.Out3[i] = rtDW.Integrator3_DSTATE[i];

} else {

rtY.Out3[i] = tmp * rtDW.Integrator3_PREV_U[i] + rtDW.Integrator3_DSTATE[i];

}

rtDW.Integrator1_PREV_U[i] = rtDW.DetAndIntegF2S_Buffer[i];

rtDW.Integrator2_PREV_U[i] = rtb_IntegOnlyF2S[i];

rtDW.Integrator3_DSTATE[i] = rtY.Out3[i];

rtDW.Integrator3_PREV_U[i] = rtU.In3[i];

rtDW.DetAndIntegS2F_Buffer0[i] = rtDW.Integrator1_DSTATE[i];

}

rtDW.Integrator1_SYSTEM_ENABLE = 0U;

rtDW.Integrator2_SYSTEM_ENABLE = 0U;

rtDW.Integrator3_SYSTEM_ENABLE = 0U;

for (i = 0; i < 20; i++) {

rtDW.IntegOnlyS2F_Buffer[i + (rtDW.IntegOnlyS2F_ActiveBufIdx == 0) * 20] =

rtDW.Integrator2_DSTATE[i];

}

rtDW.IntegOnlyS2F_ActiveBufIdx = (int8_T)(rtDW.IntegOnlyS2F_ActiveBufIdx == 0);

rtM->Timing.clockTick1++;

}

void rtwdemo_ratetrans_initialize(void)

{

rtDW.bitsForTID1.Algorithm_RESET_ELAPS_T = true;

rtDW.Integrator1_SYSTEM_ENABLE = 1U;

rtDW.Integrator2_SYSTEM_ENABLE = 1U;

rtDW.Integrator3_SYSTEM_ENABLE = 1U;

}

代碼內聯在函數 rtwdemo_ratetrans_step0 和 rtwdemo_ratetrans_step1 中。

限制

代碼生成器不會將那些具有可變大小信號或位于 For Each Subsystem 模塊內的 For Rate Transition 模塊的代碼和數據分離出來。

另請參閱

bdclose('rtwdemo_ratetrans');

rtwdemoclean;

cd(currentDir)

總結

以上是生活随笔為你收集整理的matlab 传输速率,处理速率转换- MATLAB Simulink- MathWorks 中国的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。