当前位置: 首页 > news >正文

wordpress开户多站点东莞模板建站哪家好

wordpress开户多站点,东莞模板建站哪家好,迪庆定制网站建设费用,对商家而言网站建设的好处http://item.taobao.com/item.htm?spma1z10.5-c.w4002-9510581626.24.ZO6skoid43401674106 精通MATLAB混合编程视频讲解 MATLAB各类函数视频讲解 基于MATLAB的高等数学问题求解 MATLAB函数速查视频讲解 面向对象C视频教程 精通MATLAB混编编程demo及PDF QQ#xff1a…http://item.taobao.com/item.htm?spma1z10.5-c.w4002-9510581626.24.ZO6skoid43401674106 精通MATLAB混合编程视频讲解 MATLAB各类函数视频讲解 基于MATLAB的高等数学问题求解  MATLAB函数速查视频讲解 面向对象C视频教程 精通MATLAB混编编程demo及PDF  QQ2911984429 http://item.taobao.com/item.htm?spma1z10.5-c.w4002-9510581626.24.ZO6skoid43401674106 MATLAB是什么东东不用我多说了大批的高手会告诉你它的无数好处。但是MATLAB程序存在的一般问题是  1、运算速度较慢特别是有for i1:??? for j1:??? ...... end end时那你就死定了。 2、无法脱离MATLAB环境运行虽然你可以用MATLAB自带的工具把M文件转成可执行程序但是执行时你只能看到一个黑黑的窗口难道这就是......Windows? $%%^$##%。 3、GUI功能差。许多大侠不愿意看到2中所述的DOS-Windows界面于是使用了MATLAB带的GUI生成工具。不要扔臭鸡蛋我知道你用Graphic Editor改了一下界面发现以前的工作全都白做了——因为被覆盖了西西但是MATLAB提供的控件和事件实在有限。GUI界面做好后放在机器里向尚未进实验室的师妹们炫耀一下还勉强可以增加一些魅力值。如果被专家看到了西西。只怕效果不太美妙。 因此如果能够实现MATLAB与VC或者BC或者CBUILDER等可视化设计语言的交互提高速度美化界面使程序更符合Windows的规范同时又利用MATLAB的强大功能对任何人来说都很有意义。 我在课题中涉及到了部分MATLAB与C的接口知识在这里总结出来算是抛砖引玉吧。其中错误以及偏颇的地方尚请各位大侠以及高手多多指教谢谢 一接口种类 用C或者C语言操作MATLAB有三种途径 ·MEX文件 在MATLAB中可调用的C或Fortran语言程序称为MEX文件。MATLAB可以直接把MEX文件视为它的内建函数进行调用。MEX文件是动态链接的子例程MATLAB解释器可以自动载入并执行它。MEX文件主要有以下用途 对于大量现有的C或者Fortran程序可以无须改写成MATLAB专用的M文件格式而在MATLAB中执行。 对于那些MATLAB运算速度过慢的算法可以用C或者Frotran语言编写以提高效率。 ·MAT文件应用程序 MAT文件是MATLAB专用的用于保存数据至磁盘和向MATLAB导入、从MATLAB导出数据的数据文件格式。MAT文件提供了一种简便的机制它允许你在两个平台之间以灵活的方式移动数据。而且它还提供了一种途径来向其它单机MATLAB应用导入或者导出数据。 为了简化在MATLAB环境之外对MAT文件的使用MATLAB给出了一个操作例程库通过它我们可以使用C/C或者Fortran程序读写MAT文件。 ·引擎应用程序 MATLAB提供了一系列的例程使得别的程序可以调用MATLAB从而把MATLAB用作一个计算引擎。MATLAB引擎程序指的是那些通过管道在UNIX系统中或者ActiveX在Windows系统中与独立MATLAB进程进行通信的C/C或者Fortran程序。 MATLAB同样提供了一个函数库来启动或者结束MATLAB进程、与MATLAB交换数据以及发送MATLAB命令。 二MEX文件 1、一个MEX的例子 #include mex.h /* * timestwo.c - example found in API guide * * Computational function that takes a scalar and doubles it. * * This is a MEX-file for MATLAB. * Copyright (c) 1984-1998 The MathWorks, Inc. */ /* $Revision: 1.5 $ */ /* 本MEX文件的目的是实现timestwo的功能 void timestwo(double y[], double x[])是你的C函数 */ void timestwo(double y[], double x[]) { y[0] 2.0*x[0]; } /*下面这个mexFunction的目的是使MATLAB知道如何调用这个timestwo函数*/ void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) /* nlhs是MATLAB命令行方式下输出参数的个数 *plhs[]是MATLAB命令行方式下的输出参数 nrhs是MATLAB命令行方式下输入参数的个数 *prhs[]是MATLAB命令行方式下的输入参数 */ { double *x,*y; int mrows,ncols; /* Check for proper number of arguments. */ if(nrhs!1) { mexErrMsgTxt(One input required.); } else if(nlhs1) { mexErrMsgTxt(Too many output arguments); } /* 在MATLAB命令行方式下本MEX文件的调用格式是ytimestwo(x) 输入参数x个数1输出参数y个数1所以在程序一 开始就检查nrhs是否1以及nlhs是否1因为MATLAB有一个缺省 输出参数ans所以nlhs可以0 */ 输出参数ans所以nlhs可以0 */ /* The input must be a noncomplex scalar double.*/ mrows mxGetM(prhs[0]); /* 获得输入矩阵的行数 */ ncols mxGetN(prhs[0]); /* 获得输入矩阵的列数 */ if( !mxIsDouble(prhs[0]) || mxIsComplex(prhs[0]) || !(mrows1 ncols1) ) { mexErrMsgTxt(Input must be a noncomplex scalar double.); } /* 判断输入矩阵是否是double类以及它是否只包括单个元素 */ /* 为输出创佳一个矩阵显然这个矩阵也应该是1x1的 */ plhs[0] mxCreateDoubleMatrix(mrows,ncols, mxREAL); /* 获得指向输入/输出矩阵数据的指针 */ x mxGetPr(prhs[0]); y mxGetPr(plhs[0]); /* 调用C函数timestwo(y,x) */ timestwo(y,x); } 把上面这个文件用MEX编译后MATLAB命令行下调用的实例 x 2; y timestwo(x) y  y  4 2、MEX文件的编程规则 1编制自己的C算法程序 2紧跟着定义mexFunction函数mexFunction的定义法唯一 它只能是如下形式: void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) 其名称和参数类型不许有任何改变在mexFunciton函数中可以调用你刚定义好的C程序。 3、MEX文件的编译 MATLAB提供了专门编译MEX文件的工具mex它可以把你做好的C源程序编译成 .mex文件供MATLAB在命令行方式下调用。调用时输入你的C函数名上例中为timestwo。具体mex的设置和使用方法可以在MATLAB命令行方式下用help mex命令获得。 三MAT文件 1、概述 .MAT文件是MATLAB专用的数据存储格式由于MATLAB提供了一套可供MATLAB调用的API函数集所以我们完全可以在C中访问.MAT文件。这样做的意义是你可以把计算过程留给MATLAB而用C对计算结果进行分析或者可视化处理。 2、接口 MATLAB提供的API函数集封装于下面两个标准DLL文件中libmat.dll, libmx.dll。前者用于对MAT文件的操作后者用于对MAT文件中矩阵的操作。他们的存放路径为MATLAB/bin。 在MATLAB/extern/include中有与前面两个DLL对应的DEF文件 libmat.edf, libmx.dbf。 其导出函数的原型位于同一目录下的 mat.h和matrix.h中 有了这些DLL、DEF、H文件该怎么用C调用API函数就不用我多说了吧。 3、MATLAB中常用的矩阵类型 ·复双精度矩阵Complex Double-Precision Matrices MATLAB中最常用的数据类型便是复双精度、非稀疏矩阵这些矩阵的元素都是双精度double的矩阵的尺寸为m×n其中m是总行数m是总列数。矩阵数据实际存放在两个双精度向量中——一个向量存放的是数据的实部另一个向量存放的是数据的虚部。指向这两个向量的指针一般被写做“pr” pointer to real data指向实数据的指针和“pi” pointer to imaginary data指向虚数据的指针”。如果一个矩阵的pi为空的话说明它是实双精度矩阵。 ·稀疏矩阵Sparse Matrices MATLAB中稀疏矩阵的存储格式与众不同。如同双精度矩阵一样它拥有参数pr和pi同时它还具用三个附加的参数nzmaxir以及jc。 nzmax是个整型数其值为向量ir及pr、pi如果存在的话可能的最大长度。它是稀疏矩阵中不为零的元素的个数。 ir指向一个长度为nzmax的整型数阵列阵列包含的是pr和pi中对应元素的行号。 jc指向一个长度为N1的整型数阵列N为矩阵的列数其中包含的是列号信息。对于任意的j如果0≤j≥N-1jc[j]是第j列中第一个非零项在ir、pr以及pi中的序号jc[j1]-1是第j列最后一个非零项的序号。因此jc[N]总等于nnz——矩阵中非零项的总个数。如果nnz小于nzmax可以继续向矩阵中添加非零项而无需分配额外的存储空间 。 4、主要函数举例 ·MATFile *matOpen(const char *filename, const char * mode)——打开/创建 ·MATFile *matOpen(const char *filename, const char * mode)——打开/创建一个MAT文件 ·int matClose(MATFile *pMF)——关闭一个MAT文件 ·mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity flag) ——创建一个复双精度矩阵 ·mxArray *mxCreateSparse(int m, int n, int nzmax, mxComplexity flag) ——创建一个稀疏矩阵 ·mxArray *matGetNextArray(MATFile *pMF)——获得MAT文件里面下一个矩阵 ·const char *mxGetName(const mxArray *pa)——获得矩阵pa的名称 ·void mxSetName(mxArray *pa,const char *s)——为矩阵pa设置一个名称 ·int mxGetM(const mxArray *pa)——获得矩阵pa的总行数 ·int mxGetN(const mxArray *pa)——获得矩阵pa的总列数 ·double *mxGetPr(const mxArray *pa)——获得矩阵pa的pr指针 ·int *mxGetIr(const mxArray *pa)——获得稀疏矩阵pa的ir指针 ·int *mxGetJc(const mxArray *pa)——获得稀疏矩阵pa的jc指针 ·int matPutArray(MATFile * pMF, const mxArray * pA) ——把矩阵pA存储入MAT文件pMAF ·void mxDestroyArray(mxArray *pa)——释放矩阵pa把它从内存中撤销 5、两个例子 ·获取一个MAT文件中第一个矩阵的信息 ·获取一个MAT文件中第一个矩阵的信息 typedef struct { char szFileName[256]; MATFile* pMatFile; mxArray* pArray; char szArrayName[64]; char szErrMsg[256]; unsigned int nArrayDim[2]; bool bIsSparse; } MATFileStruct; int GetMATFileStruct(MATFileStruct *pMAThdr) { if((pMAThdr-pMatFilematOpen(pMAThdr-szFileName,r))NULL) { strcpy(pMAThdr-szErrMsg,Cant open this mat file); return(0); }/*打开一个MAT文件*/ if((pMAThdr-pArraymatGetNextArray(pMAThdr-pMatFile))NULL) { strcpy(pMAThdr-szErrMsg,Cant get arrays); matClose(pMAThdr-pMatFile); return(0); }/*获取MAT文件中的第一个矩阵*/ }/*获取MAT文件中的第一个矩阵*/ pMAThdr-nArrayDim[0]mxGetM(pMAThdr-pArray); /*获取其行数*/ pMAThdr-nArrayDim[1]mxGetN(pMAThdr-pArray); /*获取其列数*/ strcpy(pMAThdr-szArrayName,mxGetName(pMAThdr-pArray)); /*获取其名称*/ pMAThdr-bIsSparsemxIsSparse(pMAThdr-pArray); /*判断它是否是系数矩阵*/ mxDestroyArray(pMAThdr-pArray); /*在内存中撤销这个矩阵*/ matClose(pMAThdr-pMatFile); /*关闭MAT文件*/ return(1); } ·创建稀疏矩阵并赋值 int i,j,k,m,n,nzmax,*ir,*jc; double *pr; unsigned short *pData; mxArray *pa; file://初始化。 mpLCMShdr-TrueHdr.nArrayDim[0]; file://获得原矩阵行数。 npLCMShdr-TrueHdr.nArrayDim[1]; file://获得原矩阵列数。 nzmax0; for(i0;im*n;i) { if(pData[i]!0) nzmax; nzmax; } file://计算数据中非零元个数。 if(nzmaxn) nzmaxn; pamxCreateSparse(m,n,nzmax,mxREAL); /*创建一个空的稀疏矩阵pa。*/ mxSetName(pa,pLCMShdr-TrueHdr.szArrayName); /*为稀疏矩阵pa设置名称。*/ prmxGetPr(pa); file://获得pa的pr指针。 irmxGetIr(pa); file://获得pa的ir指针。 jcmxGetJc(pa); file://获得pa的jc指针。 k0; for(j0;jn;j) { jc[j]k; file://jc[j]截至到第j列非零元的个数。 for(i0;i { if(pData[i]!0) file://如果第j列第i行的元素是个非零元。 { ir[k]i; file://记录下第k个非零元的行号。 k; } } pDatam; file://移动pData指针到下一列。 } jc[n]k; file://jc[n]等于矩阵中非零元的个数。 matPutArray(pmat,pa); file://把稀疏矩阵pa存入MAT文件pmat。 mxDestroyArray(pa); file://从内存中撤销矩阵pa。 五引擎应用程序 1、简介 引擎应用程序的实质是把MATLAB做为一个引擎它允许从你自己的C程序调用这个引擎。在运行时引擎作为一个进程单独运行你的C程序也作为一个进程单独运行二者可以通过进程间的通信机制进行交互。 2、引擎库 MATLAB引擎库包含了若干个控制MATLAB引擎的函数如下所示 engOpen 启动MATLAB引擎 engClose 关闭MATLAB引擎 engGetArray 从MATLAB引擎中获取一个MATLAB矩阵 engPutArray 向MATLAB引擎发送一个MATLAB矩阵 engEvalString 执行于一个MATLAB命令 engOutputBuffer 创建一个存储MATLAB文本输出的缓冲区 同时引擎应用程序还可以使用前面提到的API函数。 3、一个例子 从这个示例中我们看出引擎应用程序是如何编制的 /* $Revision: 1.3 $ */ /* * engdemo.c * * This is a simple program that illustrates how to call the * MATLAB engine functions from a C program. * * Copyright (c) 1996-1998 The MathWorks, Inc. * All rights reserved */ #include #include #include #include engine.h #define BUFSIZE 256 int main() { Engine *ep; mxArray *T NULL, *result NULL; char buffer[BUFSIZE]; double time[10] { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 }; 8.0, 9.0 }; 6-6 /* * 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, /nCant start MATLAB engine/n); return EXIT_FAILURE; } /*启动MATLAB引擎*/ /* * 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); /*创建一个矩阵*/ mxSetName(T, T); /*设置矩阵的名字为“T”*/ memcpy((void *)mxGetPr(T), (void *)time, sizeof(time)); /*向矩阵“T”赋值*/ /* * 把矩阵“T”置入MATLAB引擎 */ engPutArray(ep, 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;); /*执行MATLAB 命令D .5.*(–9.8).*T.^2*/ /* * 绘制图象. */ engEvalString(ep, plot(T,D);); /*执行MATLAB命令绘图*/ engEvalString(ep, title(Position vs. Time for a falling object);); /*执行MATLAB命令给图象加标题*/ engEvalString(ep, xlabel(Time (seconds));); /*执行MATLAB命令设置X轴坐标*/ engEvalString(ep, xlabel(Time (seconds));); /*执行MATLAB命令设置X轴坐标*/ engEvalString(ep, ylabel(Position (meters));); /*执行MATLAB命令设置Y轴 坐标*/ /* * 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); /* * Were done for Part I! Free memory, close MATLAB engine. */ printf(Done for Part I./n); mxDestroyArray(T); /*从内存中撤销矩阵“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. */ engOutputBuffer(ep, buffer, BUFSIZE); /*构建MATLAB文本输入缓冲区*/ while (result NULL) { char str[BUFSIZE]; /* * 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( ); /*要求用户输入一个MATLAB命令*/ fgets(str, BUFSIZE–1, stdin); /*获得用户输入*/ /* * Evaluate input with engEvalString. */ engEvalString(ep, str); /*执行用户输入的MATLAB命令*/ engEvalString(ep, str); /*执行用户输入的MATLAB命令*/ /* * Echo the output from the command. First two characters * are always the double prompt (). */ printf(%s, buffer2); /*显示该MATLAB命令的执行情况*/ /* * Get result of computation. */ printf(/nRetrieving X.../n); if ((result engGetArray(ep,X)) NULL) /*判断是否可以从MATLAB 引擎中获得矩阵“X”*/ printf(Oops! You didnt create a variable X./n/n); else printf(X is class %s/t/n, mxGetClassName(result)); /*显示矩阵“X” 的类型*/ } /* while(resultNULL)*/ /* * Were done! Free memory, close MATLAB engine and exit. */ printf(Done!/n); mxDestroyArray(result); /*从内存中撤销矩阵“T”*/ engClose(ep); /*关闭MATLAB引擎*/ return EXIT_SUCCESS; /*返回*/ } 4、引擎应用程序的编译 对于象上例中的控制台程序可以在MATLAB命令行中直接使用带-f参数的mex命令编译。 如果在普通win32 application中使用MATLAB引擎情况则比较复杂。在Windows中MATLAB引擎是通过ActiveX被调用的。因此你需要先Create一个OLE Automation Sever和一个OLE Client然后通过OLE方式调用这个MATLAB引擎。具体做法可参阅相关MATLAB随机文档。 5、总结 MATLAB引擎的调用与其它引擎例如数据库引擎的调用很类似其步骤是联接/启动引擎然后向引擎发送命令获得引擎处理结果。 结束语 上面简要介绍了MATLAB与C的几种接口方式我们可以根据要求的不同采用相应的方式。 此外MATLAB还提供了一个数学库由此数学库我们可以获得对MATLAB内部命令更多的访问权和更灵活的访问方式。具体内容可参考MATLAB的相关随机文档。 ·参考文献 1、MATLAB随机文档apiguide.pdf 2、MATLAB随机文档apiref.pdf 3、MATLAB随机文档c_math_ref1.pdf ·致谢 感谢loverboy的鼓励他声称要把这些帖子放到他的主页上才使得我能够在短时间完成这篇接口问题的文章西西。 ·备注 mex编译器在VC6下的设置可参阅本板19#文 Bluesky的意见 VC程序员最好用visual matcom。VB用matrixVB mathtool在主页上提供免费试用快去下吧。matlab的功能可在你的VC,VB中实现而且只需两个dll即可发行。
http://www.pierceye.com/news/983000/

相关文章:

  • 网页设计制作音乐排行榜一键seo提交收录
  • 网站推广要我营业执照复印件conoha wordpress
  • 免费行情软件app网站排行高质量外链网站
  • 免费解析网站制作网站开发项目实战视频
  • 柳州网站建设工作室基金会网站开发方案
  • 龙海网站建设微网站如何建设
  • 手机视频网站怎么做贵阳专业做网站
  • 网站建设题库vps上的网站运行太慢
  • 化妆品网站优化沧州网站制作公司
  • 专业优定软件网站建设上海seo服务
  • 网站充值怎么做的c2c平台的产品类型
  • 阿里去要企业网站建设方案书手机设计房子的软件3d下载
  • 凡科网站登录入轻博客网站开发
  • wordpress微信机器人订阅号性价比高seo网站优化
  • 网站建设全网推广亚马逊seo搜索什么意思
  • 做网站_你的出路在哪里android app for wordpress
  • 代刷网网站建设成都建立网站
  • 建设网站的费用预算商城网站制作
  • 北京网络法庭2018年企业网站优化如何做
  • asp.net做网站的步骤网站维护的作用
  • 网站制作前期所需要准备wordpress邮箱配置文件
  • 网站建设网站排名怎么做赣州专业做网站
  • 吉林电商网站建设价格做网站需要每年都缴费吗
  • 怎样用dede搭建网站域名网址
  • 做网站编辑有前途怎么样才算是一个网站页面
  • 建设鲜花网站前的市场分析网店设计理念
  • 网站建设优化服务公司wordpress非代码方式添加备案号
  • asp网站安装到空间教育网站平面设计
  • 快速设计一个网站网站h标签
  • 怎么做百度联盟网站前端面试题