c语言调用matlab程序,c语言调用matlab程序.pdf

C 语言工程中调用 matlab 程序 Edit by waloga QQ 84974467 欢迎交流 1 在项目设置中 包含 matlab 目录 2 在连接器中包含库文件的目录 3 加入相应的静态库 4 将 matlab 路径加入到系统环境变量 path 中 如 我的 matlab 安装在 c 盘 matlab 的路径为 C Program Files x86 MATLAB R2013a bin win32 在 我的电脑 中 高级 系统环境变量设置 找到 path path 的值包含非常多的目录 其他的不管 只需要 将 matlab 的路径加个分号 添加在 path 最后 其他的千万不要动 5 engdemo c 是 matlab 提供的文件 将它做成 win32 的控制台程序 完成以上步骤的设置 便可以直接运行了 仔细阅读程序不难发现 其只要的函数是 engOpen 打开 matlab 的 engine mxCreateDoubleMatrix 定义 matlab的矩阵 engPutVariable 将变量放到 matlab 的 engine中 engEvalString 执行 matlab的语句 mxDestroyArray 释放变量 engClose 关闭 matlab 的 engine 附件 engdemo c的详细代码 Revision 1 8 4 4 engdemo c A simple program to illustrate how to call MATLAB Engine functions from a C program Copyright 1984 2011 The MathWorks Inc All rights reserved include include include include engine h define BUFSIZE 256 int main Engine ep mxArray T NULL result NULL char buffer BUFSIZE 1 double time 10 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 Call engOpen with a NULL string This starts a MATLAB process on the current host using the command matlab if ep engOpen NULL fprintf stderr nCan t start MATLAB engine n return EXIT FAILURE PART I For the first half of this demonstration send data to MATLAB analyze the data and plot the result Create a variable for the data T mxCreateDoubleMatrix 1 10 mxREAL memcpy void mxGetPr T void time sizeof time Place the variable T into the MATLAB workspace engPutVariable ep T T Evaluate a function of time distance 1 2 g t 2 g is the acceleration due to gravity engEvalString ep D 5 9 8 T 2 Plot the result engEvalString ep plot T D engEvalString ep title Position vs Time for a falling object engEvalString ep xlabel Time seconds engEvalString ep ylabel Position meters use fgetc to pause long enough to be able to see the plot printf Hit return to continue n n fgetc stdin We re done for Part I Free memory close MATLAB figure printf Done for Part I n mxDestroyArray T engEvalString ep close PART II For the second half of this demonstration we will request a MATLAB string which should define a variable X MATLAB will evaluate the string and create the variable We will then recover the variable and determine its type Use engOutputBuffer to capture MATLAB output so we can echo it back Ensure first that the buffer is always NULL terminated buffer BUFSIZE 0 engOutputBuffer ep buffer BUFSIZE while result NULL char str BUFSIZE 1 Get a string input from the user printf Enter a MATLAB command to evaluate This command should n printf create a variable X This program will then determine n printf what kind of variable you created n printf For example X 1 5 n printf fgets str BUFSIZE stdin Evaluate input with engEvalString engEvalString ep str Echo the output from the command printf s buffer Get result of computation printf nRetrieving X n if result engGetVariable ep X NULL printf Oops You didn t create a variable X n n else printf X is class s t n mxGetClassName result We re done Free memory close MATLAB engine and exit printf Done n mxDestroyArray result engClose ep return EXIT SUCCESS

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值