亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
C++調(diào)用MATLAB引擎
[打印本頁(yè)]
作者:
keehoo
時(shí)間:
2011-12-20 12:19
標(biāo)題:
C++調(diào)用MATLAB引擎
這是MATLAB自帶的例子,我在WindowsXP(SP2), MATLAB R2007b, VC6.0下實(shí)現(xiàn)。
具體的步驟是:
1). 設(shè)置系統(tǒng)環(huán)境變量path,path里面要包括MATLAB的exe, dll那個(gè)路徑
%MATLAB_PATH%\bin\win32
只要MATLAB是正確安裝,它應(yīng)該會(huì)自動(dòng)配置path環(huán)境變量的。
右擊我的電腦->屬性->高級(jí)->環(huán)境變量->系統(tǒng)變量
雙擊path
path值應(yīng)該有以下兩個(gè)值,中間是分號(hào)
d:\MATLABR2007b\bin;d:\MATLABR2007b\bin\win32
2). 設(shè)置VC的路徑
運(yùn)行VC,轉(zhuǎn)到options
include增加MATLAB的include路徑 %MATLAB_PATH%\extern\include
lib增加%MATLAB_PATH%\extern\lib\win32\microsoft
這一步以后都不用做了。
3). 在VC中新建一個(gè)console項(xiàng)目(也可以是win32,mfc等其他項(xiàng)目),項(xiàng)目的link輸入增加libeng.lib和libmx.lib(每個(gè)工程都要添加,否則編譯不能通過(guò))
4). main函數(shù)的代碼:
/* $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
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 = .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+2);
/*
* 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;
}
復(fù)制代碼
編譯運(yùn)行,等一會(huì)兒會(huì)有一個(gè)MATLAB圖形窗口彈出。
轉(zhuǎn)載自:
http://hi.baidu.com/dreadnaught/ ... 48a5c97dd92a3f.html
歡迎光臨 Chinaunix (http://72891.cn/)
Powered by Discuz! X3.2