Matlab 版 (精华区)

发信人: fork (撒哈拉沙漠的沙), 信区: Matlab
标  题: m文件转c/c++,参数传递
发信站: BBS 哈工大紫丁香站 (Mon Mar 21 09:27:56 2005)

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)。
--
段正游低声向范骅、华赫艮、巴天石诸人道:“这位萧大侠于我有救命之恩,待会危急
之际,咱们冲入人群,助他脱险。”范骅道:“是!”向拔刃相向的数千豪杰瞧了几眼,说
道:“对方人多,不知主公有何妙策?”段正淳摇摇头,说道:“大丈夫恩怨分明,尽力而
为,以死相报。”大理众士齐声道:“原当如此!”


※ 来源:·哈工大紫丁香 http://bbs.hit.edu.cn·[FROM: 202.102.144.36]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.096毫秒