result = engGetVariable(ep,"X")

转载 2012年03月22日 21:00:30
/* $Revision: 1.8.4.1 $ */
/*
* engdemo.c
*
* This is a simple program that illustrates how to call the MATLAB
* Engine functions from a C program.
*
* Copyright 1984-2003 The MathWorks, Inc.
* All rights reserved
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "engine.h"
#define BUFSIZE 256
#pragma comment(lib,"libeng.lib")
#pragma comment(lib,"libmx.lib")
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 };
/*
* Start the MATLAB engine locally by executing the string
* "matlab"
*
* To start the session on a remote host, use the name of
* the host as the string rather than \0
*
* For more complicated cases, use any string with whitespace,
* and that string will be executed literally to start MATLAB
*/
if (!(ep = engOpen("\0"))) {
   fprintf(stderr, "\nCan't start MATLAB engine\n");
   return EXIT_FAILURE;
}
/*
* PART I
*
* For the first half of this demonstration, we will send data
* to MATLAB, analyze the data, and plot the result.
*/
/*
* Create a variable for our 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 =0.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 make sure that we 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 engine.
*/
//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. First two characters are
      * always the double prompt (>>).
      */
     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));
		   printf("X[0]=%lf\n",*mxGetPr(result));
          }
}
/*
	* We're done! Free memory, close MATLAB engine and exit.
	*/
	printf("Done!\n");
	mxDestroyArray(result);
	engClose(ep);
	return EXIT_SUCCESS;
}

C++中数组与MATLAB mxArray相互赋值

完成功能下:C++中产生一个256X256大小的数组A;现在要在这个数组显示为一个灰度图像,然后把该数组里面的每一个值乘2后返回给原数组:C++程序如下:#include "stdafx.h"#inc...
  • lemon11231008
  • lemon11231008
  • 2011年06月14日 13:25
  • 1400

Matlab 执行engEvalString命令介绍

MATLAB与VC混合编程指导书 在调用 Matlab 引擎之前,首先应在相关文件中加入一行: #include "enging.h" ,该文件包含了引擎 API 函数的说明和所需数据结构的定义。可...
  • Eagleest
  • Eagleest
  • 2012年06月29日 13:49
  • 6931

JBPM学习(五):流程变量

1.启动流程实例 // 启动流程实例 @Test public void startProcessInstance() { // 使用指定key的最新版本的流程定义启动流程实例 ProcessIn...
  • v123411739
  • v123411739
  • 2014年05月03日 18:36
  • 4346

JBPM学习(五):流程变量

1.启动流程实例 // 启动流程实例 @Test public void startProcessInstance() { // 使用指定key的最新版本的流程定义启动流程实例 ProcessIn...
  • v123411739
  • v123411739
  • 2014年05月03日 18:36
  • 4346

jbpm中的流程变量

package com.njupt.jbpm; import java.util.Map; import java.util.Set; import org.jbpm.api.Configurat...
  • caihongshijie6
  • caihongshijie6
  • 2013年05月16日 17:29
  • 1783

习题 4.6 有一个函数:y=x (x<1) y=2x-1 (1<=x<10) y=3x-11 (x>=10) 写程序,输入x的值,输出y相应的值。

C程序设计 (第四版) 谭浩强 习题5.6 个人设计有一个函数:y⎧⎩⎨x2x−13x−11(x...
  • navicheung
  • navicheung
  • 2017年08月06日 11:48
  • 3822

【R语言】apply函数族

R语言apply系列函数的基本作用是对数组(array,可以是多维)或者列表(list)按照元素或元素构成的子集合进行迭代,并将当前元素或子集合作为参数调用某个指定函数。vector是一维的array...
  • wltom1985
  • wltom1985
  • 2015年12月25日 16:00
  • 3441

3.5矩阵信息的获取

矩阵的信息主要包括矩阵结构、矩阵大小、矩阵维度、矩阵的数据类型及内存占用等。 1。矩阵结构 矩阵的结构是指矩阵子元素的排列方式。MATLAB提供了各种测试函数 函数名称      函数功能 ise...
  • MATLAB_matlab
  • MATLAB_matlab
  • 2016年11月19日 09:46
  • 784

算法提高 7-2求arccos值

算法提高 7-2求arccos值   时间限制:10.0s   内存限制:256.0MB      问题描述   利用标准库中的cos(x)和fabs(x)函数实现arccos(x)函数,...
  • Dy_1748204009
  • Dy_1748204009
  • 2017年04月02日 10:55
  • 359

练习2-6 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。

练习2-7 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。 参考代码如...
  • taolusi
  • taolusi
  • 2016年09月01日 16:28
  • 1851
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:result = engGetVariable(ep,"X")
举报原因:
原因补充:

(最多只允许输入30个字)