📄 例11-14 .m
字号:
/*
* engdemo.c
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
//engine.h中包含有使用计算引擎时要用的函数声明
#include "engine.h"
#define BUFSIZE 256
int main()
{
Engine *ep;
mxArray *T = NULL, *result = NULL;
char buffer[BUFSIZE];
double time[10] = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0,
8.0, 9.0};
/*
* 通过指令字符串“matlab”可以
* 打开本地MATLAB计算引擎
*
* 如果需要打开远程计算引擎,可以使用远程主机的名字,而不是\0
*
*/
if (!(ep = engOpen("\0"))) {
fprintf(stderr, "\nCan't start MATLAB engine\n");
return EXIT_FAILURE;
}
/*
* PART I
*
* 对于该例子的前半部分,将数据输入到
* MATLAB中,分析数据并绘制结果图。
*/
/*
* 创建变量
*/
T = mxCreateDoubleMatrix(1, 10, mxREAL);
memcpy((void *)mxGetPr(T), (void *)time, sizeof(time));
/*
* 将变量T放到MATLAB 工作空间
*/
engPutVariable(ep, "T", T);
/*
* 计算函数distance = (1/2)g.*t.^2的值
*/
engEvalString(ep, "D = .5.*(-9.8).*T.^2;");
/*
* 绘制图形
*/
engEvalString(ep, "plot(T,D);");
engEvalString(ep, "title('落体的位置和时间关系');");
engEvalString(ep, "xlabel('时间 (秒)');");
engEvalString(ep, "ylabel('位置 (米)');");
/*
* 使用fgetc() 确保有足够的时间绘制函数图形
*/
printf("Hit return to continue\n\n");
fgetc(stdin);
/*
* Part I 到此结束!释放内存资源 ,关闭MATLAB 计算引擎
*/
printf("Done for Part I.\n");
mxDestroyArray(T);
engEvalString(ep, "close;");
/*
* PART II
*
* 该程序的第二部分要求输入一个字符串,这个
* 字符串定义一个变量X。MATLAB将识别这个
* 字符串,然后返回一个变量并给出变量类型
*/
/*
* 调用engOutputBuffer捕获MATLAB 输出
*/
engOutputBuffer(ep, buffer, BUFSIZE);
while (result == NULL) {
char str[BUFSIZE];
/*
* 获得用户输入的字符串
*/
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-1, stdin);
/*
* 调用engEvalString识别输入参数
*/
engEvalString(ep, str);
printf("%s", buffer+2);
/*
* 获得计算结果
*/
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));
}
}
/*
* PART II到此完成! 释放内存,关闭计算引擎
*/
printf("Done!\n");
mxDestroyArray(result);
engClose(ep);
return EXIT_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -