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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并行流 线程池_使用自定义线程池处理并行数据库流

并行流 线程池并行数据库流 在上一篇文章中 &#xff0c;我写了关于使用并行流和Speedment并行处理数据库内容的文章。 在许多情况下&#xff0c;并行流可能比通常的顺序数据库流快得多。 线程池 Speedment是一个开源的Stream ORM Java工具包和Runtime Java工具&#xff0c;它…

MySQL关于check约束无效的解决办法

首先看下面这段MySQL的操作&#xff0c;新建一个含有a和b的表&#xff0c;其中a用check约束必须大于0&#xff0c;然而插入了一条(-2,1,1)的数据&#xff0c;其中a-2&#xff0c;也是成功插入的。 所以MySQL只是check&#xff0c;但是不强制check。 mysql> create table c…

hibernate框架 最新_java框架,使用最频繁的9个程序!

Java在多年的发展历程中&#xff0c;已证明自己是为软件开发而生的顶级通用编程语言。Java 广泛用于科学和教育&#xff0c;金融&#xff0c;法律和政府等许多行业。Java 是开源和面向对象的&#xff0c;其开发目的是使应用程序开发人员可以编写一次然后在任何地方运行。编译后…

php遍历目录与文件夹,介绍几种php遍历目录与文件夹的方法

介绍几个php遍历目录的方法&#xff0c;可以遍历目录及目录中的文件&#xff0c;供大家参考遍历目录或遍历目录下指定类型的文件&#xff0c;这是每一个童鞋在写程序的时候难免会用到的。PHP本身也提供了很多灰常有用的函数&#xff0c;正确地使用它们&#xff0c;不会有错滴。…

twilio_15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理

twilio建筑物身份管理&#xff0c;包括身份验证和授权&#xff1f; 尝试Stormpath&#xff01; 我们的REST API和强大的Java SDK支持可以消除您的安全风险&#xff0c;并且可以在几分钟内实现。 注册 &#xff0c;再也不会建立auth了&#xff01; 今天&#xff0c;不到30秒左右…

unity webgl读写txt文件_python Files文件读写操作

今天学习python的Files文件读写操作&#xff0c;并记录学习过程欢迎大家一起交流分享。首先新建一个文本文件test.txt&#xff0c;内容如下:hello worldhello youhello mehello pythonhello universe然后新建一个python文件命名为py3_file.py&#xff0c;在这个文件中进行操作代…

matlab表达式,表达式 - MATLAB Simulink - MathWorks 中国

数组运算符如果矩阵不用于线性代数运算&#xff0c;则成为二维数值数组。数组的算术运算按元素执行。这意味着&#xff0c;加法和减法运算对数组和矩阵都是相同的&#xff0c;但乘法运算不相同。MATLAB 的乘法数组运算表示法中包含点&#xff0c;也就是小数点。运算符列表包括加…

数据库表的约束条件

文章目录1.主键约束2.非空约束3.唯一约束4.检查约束5.外键约束1.主键约束 主键约束可以用两种方式定义&#xff1a;列级主键约束和表级主键约束 列级主键约束演示&#xff1a; create table dept_htlwk( deptno varchar(20) primary key, --列级约束条件 dname varchar(20)…

垃圾收集 java_Java的内置垃圾收集如何使您的生活更美好(大部分时间)

垃圾收集 java通过从您的应用程序学习企业APM产品&#xff0c;发现更快&#xff0c;更有效的性能监控。 参加AppDynamics APM导览&#xff01; “无需为用户编写将寄存器返回到自由存储列表的程序。” 这条线&#xff08;以及随后的十几条线&#xff09;被埋在约翰麦卡锡&…

python函数的使用方法_百度资讯搜索_python函数的使用方法

金生水起程序猿 2020年11月22日 11:23函数语法格式及调用参数:默认值、元组和字典可变参数的使用全局变量和局部变量作用域,局部变量如何升级为全局变量函数是可重复使用的,实现单一功能的代码块。可以把项...百度快照金生水起程序猿 2020年11月22日 12:13函数类型定义:python中…

项目建立数据库初始环境脚本文件的示例

-----------脚本文件 begin--------- alter table student drop constraint stu_mid_fk ; – 删除参照表约束 drop table student ; – 删除参照表( 从表 ) drop table major ; – 删除被参照表( 主表 ) create table major(…) ; – 创建被参照表( 主表 ) create table s…

php soap传值,在SOAP调用中传递PHP数组

所以我试图在我的SOAP请求中包含以下XML&#xff1a;someintsomeintsomeintsomeint我查看了this的帖子,这个帖子含糊不清,但它产生的输出如下&#xff1a;object(stdClass)#1 (1) {["Responses"]>object(stdClass)#2 (1) {["Response"]>array(2) {[0…

python获取一个月之前日期_利用python获取当前日期前后N天或N月日期的方法示例...

前言 最近因为工作原因&#xff0c;发现一个Python的时间组件&#xff0c;很好用分享出来&#xff01;&#xff08;忘记作者名字了&#xff0c;在这里先感谢了&#xff09;&#xff0c;下面话不多说&#xff0c;来一起看看详细的介绍吧。 示例代码&#xff1a; # -*- coding: u…

red hat 4.1.2_安装Red Hat Container Development Kit 2.2版本

red hat 4.1.2当应用程序开发人员或架构师负责探索容器化应用程序提供的可能性时&#xff0c;没有比“红帽容器开发套件”&#xff08;CDK&#xff09;容易的了。 Red Hat CDK具有本地OSX&#xff0c;Linux或Windows环境所需的所有Cloud工具&#xff0c;并且已预先配置了一些容…

数据库的视图

视图 View 视图也被称为虚表( 虚拟的表 ) , 视图对应于一条 Select 语句 , 这条查询语句得到的结果集被赋予一个名字 , 即视图的名字 , 此后可以像操作表一样操作这个视图 使用视图的主要目的是简化复杂查询 视图可以隐藏数据表的列 视图不包含任何数据。是基表数据的投影。…

matlab中prprob,pr-sr-master

文件名大小更新时间pr-sr-master02012-09-14pr-sr-master\GetSpeechFeatures02012-09-14pr-sr-master\GetSpeechFeatures\GetSpeechFeatures.m36182012-09-14pr-sr-master\GetSpeechFeatures\audspec.m13062012-09-14pr-sr-master\GetSpeechFeatures\fft2melmx.m50022012-09-14…

python程序怎么给别人运行_如何使Python脚本作为服务运行?

小编典典 我使用此代码来守护我的应用程序。它允许您start/stop/restart使用以下命令来编写脚本。 python myscript.py start python myscript.py stop python myscript.py restart 除此之外&#xff0c;我还有一个init.d脚本来控制我的服务。这使您可以在操作系统启动时自动启…

kata_小规模流处理kata。 第2部分:RxJava 1.x / 2.x

kata在第1部分&#xff1a;线程池中&#xff0c;我们设计并实现了相对简单的系统&#xff0c;用于实时处理事件。 确保您阅读了上一部分&#xff0c;因为它包含一些我们将重用的类。 以防万一这是要求&#xff1a; 一个系统每秒发送大约一千个事件。 每个Event至少具有两个属性…

Oracle数据库的Sequence(序列)

序列 Sequence( 掌握 ) 序列(Sequence)是一种用来生成唯一数字值的数据库对象。序列的值由Oracle程序按递增或递减顺序自动生成 , 通常用来自动生成表的主键值 , 是一种高效率获得唯一键 值的途径。

高斯背景建模 matlab,高斯背景建模整理 – 要饭的

OpenCV 中高斯背景建模相关论文BackgroundSubtractorMOG:Paper : An Improved Adaptive Background Mixture Model for Real-time Tracking with Shadow DetectionWebsite : http://personal.ee.surrey.ac.uk/Personal/R.Bowden/publications/avbs01/avbs01.pdf创新点 &#x…