爱问知识人 爱问教育 医院库

请问怎样用MATLAB生成可执行程序?谢谢

首页

请问怎样用MATLAB生成可执行程序?谢谢

麻烦写详细点,我是新手。谢谢!

提交回答
好评回答
  • 2005-09-23 23:21:10
      应用举例
      下面以一个线性方程组的求解过程为例,介绍通过Matcom实现VC对Matlab程序的调用,运行环境:Win2000、Matlab6。1、Matcom4。5、Visual C++6。0
      (1)Matlab运行环境中编写程序equation。
      m,其代码如下: %equation 求解线性方程组的解 %线性方程组形如:A*X = B function X = equation(A, B) X = A\B;   (2)这里以一个简单的控制台程序为例,其它程序基本相同。在VC环境中建立一个名为Test的Win32 Console Application工程。
         (3)点击Visual Matcom工具栏上的m++图标,选择保存过的Matlab文件equation。m进行转化。如果看到的转化信息提示没有错误就可以观察到此时在FileView标签中多了m-files,C++files created from m-files,Matrix等文件。
      并且该工程目录下增加了equation。h,equation。cpp, k,equation。r等的4个文件。这时会在VC中出现一个转换完毕的文件,文件中如果报告有错误就要考虑是否程序有问题,可以双击C++files文件夹下的equation。
      m进行修改,再重新转化直到没有错误报告为止。   (4)在Test工程下建立一个文件test。cpp调用转化的Matlab函数,代码为: #include "stdio。h" #include "matlib。h" //提供转化后C++代码中使用的数据类型,函//数原型及常数 #include "equation。
      h" void main() {  /*解线性方程组:  X =  */  initM(MATCOM_VERSION); //初始化matlib库  Mm a,b,x; //使用矩阵类Mm构造矩阵a,b,x。  a = (BR(1),2,3,semi,4,5,6,semi,7,8,1);  //给矩阵a赋值,BR是Matrix库的一个  //宏,用于定义一个矩阵的开始;semi是库的//一个常量,用于分隔不同行的矩阵元素  b = zeros(3,1); //初始化矩阵b为零矩阵3行1列  b(1,1) = 37; b(2,1) = 85; b(3,1) = 69; //给矩阵b赋值  x = equation(a,b); //调用转化的函数,求解线性方程组的解  for (int i = 1; i <= ws(); i++) //把解矩阵X的元素显示出来  {   for (int j=1;j<= ls();j++)    printf("x(%d,%d)=%f\n",i,j,x。
      r(i,j));  }  exitM(); //结束对matlib库的调用  return; }   注意:程序中涉及到了两个成员函数。rows()和。cols(),它们分别返回矩阵的行数和列数;x。r(i,j)代表矩阵x的第i行第j列的元素。
         (5)编译运行后结果为x(1,1) = 3。000000 x(2,1) = 5。000000 x(3,1) = 8。000000与实际结果一致。   总结:如果需要转换的。m文件不是一个函数,只是一些Matlab命令的集合,则要在工程目录下找到转换文件的。
      cpp文件,将其中的C代码拷贝到需要调用它的函数里面。Matcom克服了mcc命令只能编译一个独立。m文件的缺点,当所编译的。m文件依赖于其他。m文件时,只要把被调用的。m文件与要编译的。m文件放在同一目录下,生成的被调用文件的。h和。cpp文件插入到VC开发的工程中就可以了。
         上面只是一个简单的控制台工程的例子,我们也可以建立其它类型的工程,只要在需要调用转换后函数的程序中包含matlib。h并且在响应函数中初始化matlib库initM(MATCOM_VERSION);结束调用后做结束工作exitM();就可以了。
         结束语   本文讨论了VC与Matlab的混合编程,主要集中讨论在VC中调用Matlab的实现方案。通过一个Matcom编译实现的例子我们看到,利用Visual Matcom转换代码非常方便,生成的代码可读性好,而且还支持多数图形函数,基本上使Matlab和VC能够得到充分的发挥。
      作者在海洋遥感图像处理中使用这种方法来提高程序的执行速度,取得了非常理想的效果。它不仅解决了Matlab的解释执行方式带来的执行速度过慢的缺陷,更重要的是它完全脱离了Matlab系统,当代码被编译成可执行程序后,又可大大提高程序的安全性。

    J***

    2005-09-23 23:21:10

其他答案

    2005-09-24 14:50:42
  • 在comand window里可以直接输入程序,点回车就会执行程序,给出结果。不过这样程序如果一不出错,就要重来。你也可以在comand window里输入edit 文件名.m 点回车,进入程序编辑窗口。".m"为matlab文件名的后缀。还有什么问题的话可以看看帮助,如果看不太懂,用金山稍微翻译一下,会有帮助的。

    n***

    2005-09-24 14:50:42

  • 2005-09-24 10:58:30
  •   应用举例
      下面以一个线性方程组的求解过程为例,介绍通过Matcom实现VC对Matlab程序的调用,运行环境:Win2000、Matlab6。1、Matcom4。5、Visual C++6。0
      (1)Matlab运行环境中编写程序equation。
      m,其代码如下: %equation 求解线性方程组的解 %线性方程组形如:A*X = B function X = equation(A, B) X = A\B;   (2)这里以一个简单的控制台程序为例,其它程序基本相同。在VC环境中建立一个名为Test的Win32 Console Application工程。
         (3)点击Visual Matcom工具栏上的m++图标,选择保存过的Matlab文件equation。m进行转化。如果看到的转化信息提示没有错误就可以观察到此时在FileView标签中多了m-files,C++files created from m-files,Matrix等文件。
      并且该工程目录下增加了equation。h,equation。cpp, k,equation。r等的4个文件。这时会在VC中出现一个转换完毕的文件,文件中如果报告有错误就要考虑是否程序有问题,可以双击C++files文件夹下的equation。
      m进行修改,再重新转化直到没有错误报告为止。   (4)在Test工程下建立一个文件test。cpp调用转化的Matlab函数,代码为: #include "stdio。h" #include "matlib。h" //提供转化后C++代码中使用的数据类型,函//数原型及常数 #include "equation。
      h" void main() {  /*解线性方程组:  X =  */  initM(MATCOM_VERSION); //初始化matlib库  Mm a,b,x; //使用矩阵类Mm构造矩阵a,b,x。  a = (BR(1),2,3,semi,4,5,6,semi,7,8,1);  //给矩阵a赋值,BR是Matrix库的一个  //宏,用于定义一个矩阵的开始;semi是库的//一个常量,用于分隔不同行的矩阵元素  b = zeros(3,1); //初始化矩阵b为零矩阵3行1列  b(1,1) = 37; b(2,1) = 85; b(3,1) = 69; //给矩阵b赋值  x = equation(a,b); //调用转化的函数,求解线性方程组的解  for (int i = 1; i <= ws(); i++) //把解矩阵X的元素显示出来  {   for (int j=1;j<= ls();j++)    printf("x(%d,%d)=%f\n",i,j,x。
      r(i,j));  }  exitM(); //结束对matlib库的调用  return; }   注意:程序中涉及到了两个成员函数。rows()和。cols(),它们分别返回矩阵的行数和列数;x。r(i,j)代表矩阵x的第i行第j列的元素。
         (5)编译运行后结果为x(1,1) = 3。000000 x(2,1) = 5。000000 x(3,1) = 8。000000与实际结果一致。   总结:如果需要转换的。m文件不是一个函数,只是一些Matlab命令的集合,则要在工程目录下找到转换文件的。
      cpp文件,将其中的C代码拷贝到需要调用它的函数里面。Matcom克服了mcc命令只能编译一个独立。m文件的缺点,当所编译的。m文件依赖于其他。m文件时,只要把被调用的。m文件与要编译的。m文件放在同一目录下,生成的被调用文件的。h和。cpp文件插入到VC开发的工程中就可以了。
         上面只是一个简单的控制台工程的例子,我们也可以建立其它类型的工程,只要在需要调用转换后函数的程序中包含matlib。h并且在响应函数中初始化matlib库initM(MATCOM_VERSION);结束调用后做结束工作exitM();就可以了。
         结束语   本文讨论了VC与Matlab的混合编程,主要集中讨论在VC中调用Matlab的实现方案。通过一个Matcom编译实现的例子我们看到,利用Visual Matcom转换代码非常方便,生成的代码可读性好,而且还支持多数图形函数,基本上使Matlab和VC能够得到充分的发挥。
      作者在海洋遥感图像处理中使用这种方法来提高程序的执行速度,取得了非常理想的效果。它不仅解决了Matlab的解释执行方式带来的执行速度过慢的缺陷,更重要的是它完全脱离了Matlab系统,当代码被编译成可执行程序后,又可大大提高程序的安全性。 。
      

    1***

    2005-09-24 10:58:30

类似问题

换一换
  • 程序设计 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):