VC与Matlab混合编程之基于MATLAB RTW 的建模仿真
来源:互联网 发布:淘宝聊天叫什么 编辑:程序博客网 时间:2024/04/29 05:12
本文章只是博主用来记录自己的学习过程以及期间遇到的一些问题及解决方案的总结
首先Matlab(Matlab7.0)仿真模型部分配置过程如下:
注:上面的图是在Matlab2014a中截的,只是说明一下怎么配置,整个工程是在Matlab7.0中做的。
模型中In1的输入实现:(本人一开始一直不知道In1该怎么用,蹭了一段时间,这算是第一个问题)
在命令行窗口执行以下命令即可
t=0:0.01:10;
u=stepfun(t,0);
t=t';
u=u';
完成以上配置后,在Simulink模型中点击Build,生成C代码。
然后,在VC++6.0中进行编程,本人创建的是控制台应用程序(Win32 console application)。
注:一定要在创建的VC工程中加入上面生成的C代码(所有.c和.h文件),以及在工程中设置包含Matlab的一些include文件和library文件的路径。
#include <stdio.h>#include "Matlab_RTW.h"#include "Matlab_RTW_private.h"#include "Matlab_RTW_types.h"#include "rt_nonfinite.h"#include "rtmodel.h"#include "rtwtypes.h"void RTWInitialize(void);double RTWOutput(void); void RTWTerminate(void);int main( ){int i ;double t=0;double model_out;FILE* pData = fopen("data.txt","w");//data.txt存储仿真结果if(pData==NULL){printf("Failed to open file\n");return 0;}RTWInitialize();for (i = 0; i < 1000; i++){model_out = RTWOutput();fprintf(pData,"%f\n",model_out);// printf("%f\n",model_out);//内存不足容易丢失数据t = t + 0.01;}fclose(pData);RTWTerminate();return 0;}void RTWInitialize(void){Matlab_RTW();//模型注册MdlInitializeSizes();//初始化大小MdlInitializeSampleTimes();//初始化采样次数MdlStart();//启动模型Matlab_RTW_U.In1 = 1;//给定输入}double RTWOutput(void){double Yout;MdlOutputs();//计算系统输出MdlUpdate();//更新离散状态向量Matlab_RTW_derivatives();//计算连续模型导数Yout = Matlab_RTW_Y.Out1;//记录输出结果return Yout;}void RTWTerminate(void){MdlTerminate();//模型停止}
上面的程序中,本人用TXT文件来存储仿真数据,因为在DOS界面直接输出仿真数据时,只有299个,本该是1000个,所以本人猜测是内存不足问题(这是第二个问题),所以用TXT文件较好,另外也比较容易将数据导入Matlab中绘制曲线观看仿真效果。
至此整个仿真结束。
0 0
- VC与Matlab混合编程之基于MATLAB RTW 的建模仿真
- 基于MATLAB与VC混合编程的数字均衡器设计
- 基于COM接口的VC++与MATLAB混合编程
- 蒙特卡罗仿真基于MATLAB与c语言混合编程
- Matlab与VC混合编程之二
- Matlab与VC混合编程之三
- VC与matlab的混合编程总结
- Matlab与VC混合编程
- Matlab与VC混合编程
- vc与matlab混合编程
- Matlab与VC混合编程
- Matlab与VC混合编程
- MATLAB与VC混合编程
- VC++与MATLAB混合编程
- VC与Matlab混合编程
- VC与Matlab混合编程
- VC与Matlab混合编程
- VC++与MATLAB混合编程
- Linux 安装JDK 详解
- 换行和回车(草稿)
- SQLite 异常java.lang.IllegalStateException: attempt to re-open an already-closed object
- LockSupport的使用
- GridView更新某(个)些指定单元格以及在编辑模式下无刷新显示隐藏单元格内某控件
- VC与Matlab混合编程之基于MATLAB RTW 的建模仿真
- (译)快速指南:用UIViewPropertyAnimator做动画
- Letter Combinations of a Phone Number
- 贪心算法求解最优化问题
- Linux lrzsz 详解
- 如何打造一个高逼格的云运维平台?
- Git与GitFlow工具介绍
- Python 文件I/O
- maven环境搭建