声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2043|回复: 2

[混合编程] VC调用matlab,实参怎么传递?

[复制链接]
发表于 2006-9-2 10:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我用matlab编写了computfft.m文件,然后将它生成了.dll文件,想用VC来调用,请问怎么给它赋实参.在
function [offset,flag]=computfft(source,sample,slength)中,source和sample是一个二唯矩阵,slength是int型,然后返回的参数offset,flag是double
回复
分享到:

使用道具 举报

发表于 2006-9-3 08:25 | 显示全部楼层
一个例子,由此例提请注意的是:
1. matlab中的数组下标从1开始;
2. maltab中的数据及时与VC中同名也并非同一个存储空间;
3. 学会应用各种传入传出函数




  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include "engine.h"
  5. int transs(double z1,double z2,double z3) ;
  6. #define BUFSIZE 256
  7. void main()
  8. {
  9. double z1=2;
  10. double z2=3;
  11. double z3=7;
  12. printf("z1=%f,z2=%f,z3=%f\n",z1,z2,z3);
  13. system("pause");
  14. transs(z1,z2,z3);
  15. }

  16. int transs(double z1,double z2,double z3)
  17. {
  18. Engine *ep;

  19. mxArray *z_ptr,*result=NULL;
  20. mxArray *z4_ptr;
  21. double *z4;
  22. double z[3];
  23. z[0]=z1;
  24. z[1]=z2;
  25. z[2]=z3;
  26. if(!(ep=engOpen("{followups.content}")))
  27. {
  28. fprintf(stderr,"\nCan't start MATLAB engine\n");
  29. return EXIT_FAILURE;
  30. }
  31. z_ptr=mxCreateDoubleMatrix(1,3,mxREAL);
  32. z4_ptr=mxCreateDoubleMatrix(1,2,mxREAL);
  33. memcpy((void *)mxGetPr(z_ptr),(void *)z,sizeof(z));
  34. printf("z_ptr=%f\n",z_ptr);
  35. engPutVariable(ep,"z_ptr",z_ptr);
  36. printf("z_ptr=%f\n",z_ptr);
  37. engEvalString(ep,"x1=z_ptr(1,1)");
  38. engEvalString(ep,"x2=z_ptr(1,2);");
  39. engEvalString(ep,"x3=z_ptr(1,3)");
  40. engEvalString(ep,"n1=[x1 x2];");
  41. engEvalString(ep,"d1=[x1 x2 x3];");
  42. engEvalString(ep,"[y,x,t]=step(n1,d1);");
  43. engEvalString(ep,"z4_ptr=max(y);");
  44. z4_ptr=engGetVariable(ep,"z4_ptr");
  45. z4=mxGetPr(z4_ptr);
  46. printf("z4=%f\n",*z4);
  47. mxDestroyArray(z_ptr);
  48. mxDestroyArray(z4_ptr);
  49. engClose(ep);
  50. return 1;
  51. }
复制代码

评分

1

查看全部评分

发表于 2006-9-6 20:29 | 显示全部楼层
好,谢谢!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-7 03:31 , Processed in 0.052202 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表