MATLAB中M脚本文件和M函数文件的转换

2020年12月7日19:49:32MATLAB中M脚本文件和M函数文件的转换已关闭评论

MATLAB中M脚本文件和M函数文件的转换

关于编译器的局限,其中一点就是不能直接编译脚本文件,当用户需要对脚本文件进行编译的时候,一种便捷的方法就是先把脚本文件转换为函数文件,才能用MATLAB编译器将M文件转化为MEX文件。将脚本文件转化为函数文件只需要在脚本文件的最上方加上函数的定义即可。下面应用具体实例来介绍脚本文件与函数文件的转换。

例题  脚本文件与函数文件的转换。

在M编辑器中输入:

% shili.m.

>> m=magic(4);

>> n=m.^2;

>> disp(n);

先将该文件保存在某个目录下,并将MATLAB工具栏上的当前目录改为该M文件所在目录,清空Workspace,在命令行输入:

>> shili

则显示结果为:

256 4 9 169

25 121 100 64

81 49 36 144

16 196 225 1

并且发现Workspace中多了两个变量:m和n。在命令窗口直接输入:

>> m

则显示结果为:

m =

16 2 3 13

5 11 10 8

9 7 6 12

4 14 15 1

再直接输入n:

>> n

则显示结果为:

n =

256 4 9 169

25 121 100 64

81 49 36 144

16 196 225 1

这正是脚本M文件的中间变量,即是可以访问脚本M文件的中间变量的。再利用mcc命令看看能不能将其编译为MEX文件。

在命令窗口输入:

>> mcc -x shili

则显示结果为:

??? Error using ==> mcc

Error: -x is no longer supported. The MATLAB Compiler no longer generates

MEX files because there is no longer any performance advantage to doing so: the

MATLAB JIT accelerates MATLAB files by default.

To hide proprietary algorithms, use the PCODE function.

出现了编译错误,可见MATLAB编译器不能编译脚本M文件。现在将其转化为函数M文件。在M编辑器输入:

%shili.m.

function n=shili()

m=magic(4);

n=m.^2;

disp(n);

return

运行该函数M文件前应先清空Workspace,运行后发现中间变量m和n没有保存下来,而n矩阵的值是可以得到的,因为它是函数的返回值。在命令窗口输入:

>> a=shili

256 4 9 169

25 121 100 64

81 49 36 144

16 196 225 1

则显示结果为:

a =

256 4 9 169

25 121 100 64

81 49 36 144

16 196 225 1

其中a是返回值n,再使用mcc命令编译该函数M文件。

>> mcc -x shili

编译通过,再运行shili指令得到相同的结果。

  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。