声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1633|回复: 6

[混合编程] [求助]一个MATLAB编译器的应用实例

[复制链接]
发表于 2006-3-31 14:40 | 显示全部楼层 |阅读模式

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

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

x
我想使用MATLAB的编译器,但由于是新手不太懂,所以想看一下关于这方面实例的应用。请大家帮一下忙。谢谢!
回复
分享到:

使用道具 举报

发表于 2006-3-31 19:26 | 显示全部楼层
12.3 MATLAB编译器使用入门
12.3.1 由M文件创建C MEX文件的入门算例

【例 12.3.1 -1 】先编写 M 文件,然后生成相应的 MEX 文件。该文件用以判断方阵是否奇异。
  1. cd d:\mywork
复制代码

(1)在 MATLAB 的编辑器中,编写下面的函数文件 exm1 .m 。
[exm1.m]
  1. function y=exm1(A)
  2. [m,n]=size(A);
  3. if m~=n;
  4. error( 'An input matrix should be n-by-n.' )
  5. end

  6. r=rank(A);
  7. if r==m
  8. disp( 'This matrix is nonsigular' )
  9. else
  10. disp( 'This matrix is sigular' )
  11. end
复制代码

(2)把该函数文件存放于用户目录 d:\mywork 下。
(3)在 MATLAB 命令窗中,运行以下指令对 exm1.m 进行编译。
mcc -x exm1 % 编译 m 文件。

(4)调用 MEX 文件 exm1.dll 进行计算
A=[1,0,1;2,1,0;4,1,4]
exm1(A) % 调用 exm1 来判断矩阵 A 是否奇异。
which exm1 % 查询所调用的 exm1 的路径和全称。
A =
1 0 1
2 1 0
4 1 4
This matrix is nonsigular d:\mywork\exm1.dll

12.3.2 由M文件创建外部应用程序的入门算例
【 例 12.3.2 -1 】 建立一个脱离 MATLAB 环境,可独立运行的外部程序。该程序的功能是:对于给定矩阵 A ,如果存在 S 使得 S -1 AS= Λ,则要求出一个 S ,否则给出信息说明所给的矩阵 A 不能对角化。

(1)编写两个 M 函数文件: exm2.m 和 exm2_f.m 。(第一个文件是主文件。)
[exm2.m]
  1. function exm2
  2. A=[4,0,0;0,3,1;0,1,3];
  3. S=exm2_f(A)

  4. [exm2_f.m]
  5. function S=exm2_f(A)
  6. [m,n]=size(A);
  7. if m~=n
  8. error( ' 输入矩阵应是方阵! ' );
  9. end ;
  10. e=eig(A);
  11. % 检查输入矩阵的特征值是否各异
  12. same=0;
  13. for i=1:m-1
  14. for j=(i+1):m
  15. if e(j)==e(i)
  16. same=1;
  17. end
  18. end
  19. end
  20. % A 可以对角化的条件是 A 具有互异特征值或者 A 为埃尔米特矩阵。
  21. if any(any((A'-A)))&(same==1)
  22. error( ' 矩阵无法对角化! ' );
  23. end
  24. [v,d]=eig(A);
  25. S=v;
复制代码

(2)把这两个函数文件存放于用户自己的目录 d:\mywork ,并在 MATLAB 中运行检验。
exm2
S =
1.0000 0 0
0 0.7071 0.7071
0 0.7071 -0.7071

(3)生成独立的外部可执行程序。在 MATLAB 指令窗中,运行如下指令
mcc -m exm2 exm2_f

(4)打开 DOS 窗口,在 d:\mywork 目录下,运行 exm2.exe
 楼主| 发表于 2006-4-2 08:36 | 显示全部楼层
HAPPY教授,非常感谢!
 楼主| 发表于 2006-4-2 08:38 | 显示全部楼层
关于这方面的书那一本较好呢?
发表于 2006-4-2 09:14 | 显示全部楼层
《深入浅出MATLAB 7.x混合编程》这本书不错,没见到电子版的,不过买一本还是物有所值的,具体的介绍可以看帖子
http://forum.vibunion.com/thread-4852-1-1.html
发表于 2006-4-3 09:17 | 显示全部楼层
用mcc -B sgl 文件名
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-13 02:38 , Processed in 0.055062 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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