m文件转c/c++,参数传递

本文介绍了m文件转C/C++时参数传递的方法,通过具体例子展示在C代码中向转化后的m函数传递字符串、矩阵、标量参数并获取返回值,还给出编译命令,更详细内容可参考matlab官方参考手册。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

m文件转c/c++,参数传递

在这里举一个例子说明如何在C代码中向一个转化后的m函数传递参数以及得到返回值。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function result=fork(file,M,a)

info = imfinfo(file);
A    = imread(file);
imshow(A);
Width  = info.Width;
Height = info.Height;

[m,n] = size(M);
aSum=0;
for i=1:m
    for j=1:n
        aSum = aSum + M(i,j);
    end
end
aSum = aSum * a;
result=[Width,Height,aSum];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

用这条命令来编译文件:

mcc -t -W libhg:forkDll -T link:lib -h libmmfile.mlib  libmwsglm.mlib fork

转化过程以及如何加入到VC工程中请看我的《简化m文件转化为c/c++文件,VC编译》。
让我们直接来看看VC中的代码:

///////////////////////////////////////////////////////////////////////////////
  CString str;
 str="C://SysFile//simon1//1-a.jpg";//根据你的情况选择其他的目录
 mxArray *file = NULL;
 file=mxCreateString(str.GetBuffer(str.GetLength()));//构造字符串参数

 static double data[] = { 1, 4, 2, 5, 3, 6 };
  mxArray *M = NULL;
 mlfAssign(&M, mlfDoubleMatrix(2/* Rows */,
                               3/* Columns */,
                               data,
                               NULL/* No imaginary part */));
                               //构造矩阵参数
 // M=[1 2 3;
  //    4 5 6]
 // if you want M.' , do this:
 // Mt=mlfCtranspose(M);

 double Scalar=10;
 mxArray *a = NULL;
 a=mlfScalar(Scalar); //构造标量参数

 forkDllInitialize(); //初始化

 mxArray *result=NULL; //构造返回值

 result = mlfFork(file, M, a); //调用函数

 double *hehe=NULL;
  hehe=mxGetPr(result); //取得返回指地址

 CString info;
 info.Format("Width=%f Length=%f aSum=%f",
              hehe[0],hehe[1],hehe[2]); //取得各个返回指
             
 AfxMessageBox(info);

 mxDestroyArray(file); //销毁参数
 mxDestroyArray(M);
 mxDestroyArray(a);
 mxDestroyArray(hehe);
///////////////////////////////////////////////////////////////////////////////

    以上例子演示了如何向m函数传递字符串,矩阵,标量,以及从返回指中获取多个变量
的方法。代码中的注释已经很详细了,我就不在解释。
    关于这方面更详细的内容请参考matlab官方网站上的参考手册(apiref.pdf)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值