参数传递的简单问题

gengyuan88 2003-08-23 08:32:31
#include <vcl.h>
#pragma hdrstop
#include "matrix.h"
#include "Engine.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
Engine *ep;
if (!(ep == engOpen(NULL))) {
MessageBox ((HWND)NULL, (LPSTR)"Can't start MATLAB engine",
(LPSTR) "Engwindemo.c", MB_OK);
exit(-1);
}
engEvalString(ep, "ezplot('sin(x)+2*x');");
engClose(ep);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
int a; char buffer[200];
//int *T;
int array[8]={1,3,4,5,7,2,23,15};
mxArray *S = NULL, *R= NULL, *O=NULL;// mxArray *r;
Engine *eng;
eng=engOpen(NULL);

S=mxCreateDoubleMatrix(1,8,mxREAL);
mxSetName(S, "S");
memcpy((char*) mxGetPr(S),(char *) array, 8*sizeof(int));
engPutArray(eng, S); //将变量X置入Matlab的工作空间
engEvalString(eng, "[result order]=sort(S)"); //计算
engOutputBuffer(eng, buffer, 200);
R=engGetArray(eng, "result");
O=engGetArray(eng, "order");

engClose(eng); //关闭Matlab引擎,结束调用

mxDestroyArray(S); //释放变量
mxDestroyArray(R);
mxDestroyArray(O);

现在R,O应该是计算出来了,但是我不知道怎么把结果传出来,哪位大侠帮帮忙,谢谢了
分不够了一定会加!!!



...全文
17 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gengyuan88 2003-08-24
  • 打赏
  • 举报
回复
我现在可以用mxGetPr得到计算的结果了,但是又出现了新的异常奇怪问题,当我的Matlab函数是转置时,可以得到正确的结果,当函数是S+2时就不行了,简直是没天理了!!!!!!!!!!!!!!
谁能帮我看看为什么阿
gengyuan88 2003-08-23
  • 打赏
  • 举报
回复
怎么没人理阿,气死人了:(

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧