matlab教程--matlab快速入门-文字版, matlab电子书, 和matlab edit有关的电子书:

1.3.1 M文件

1.3.1  M文件

 

M文件有两种类型:文本M文件和函数M文件。

(一)文本M文件

   一个比较复杂的程序常常要作反复的调试,这时你不妨建立一个文本文件并把它储存起来,可以随时调用进行计算。建立文本文件可以在File菜单中选择New,再选择M-file,这时MATLAB将打开一个文本编辑窗口,在这里输入命令和数据。储存时文件名遵循MATLAB变量命名的原则,但必须以m 为扩展名,其一般形式为

< M文件名>.m

如 juzhen.m, pp.m 等。

值得注意的是,文本M文件中的变量都是全局变量,在执行过程中, 文本M文件中的命令可以使用目前工作区中的变量,它所产生的变量也将成为工作区的一部分。例如我们把下面的程序保存为名为budijifen1.m的文本M文件:

function  budijifen1

x=-4*pi:0.014*pi;a=1;

for C=-3:3

y =1/2*(-sin(a*x)+a*x)/a+C

plot(x,y)

hold on

end

grid

hold off

xlabel('自变量 X')

ylabel('因变量 Y')

title('不定积分的积分曲线族')

legend('不定积分的积分曲线族')

然后在MATLAB工作窗口中输入文件名:

>> budijifen1

运行后屏幕显示计算结果(略)和图形(见图1-9)。

再如,将下面的一个生成矩阵的程序保存为名为juzhen.m的文本M文件:

for i=1:k

for j=1:n

b(i,j)=7/(2*i+3*j-6);

end

end

a=rats(b)

然后在MATLAB工作窗口中输入:

>> k=3;n=4; juzhen,b

图1-9 名为budijifen1.m的文本M文件的图形

 

运行后屏幕显示运行结果如下:

a =

      -7            7/2           7/5           7/8    

       7            7/4            1            7/10   

      7/3           7/6           7/9           7/12   

b =

 -7.0000e+000  3.5000e+000  1.4000e+000  8.7500e-001

 7.0000e+000  1.7500e+000  1.0000e+000  7.0000e-001

 2.3333e+000  1.1667e+000  7.7778e-001  5.8333e-001

 

(二) 函数M文件

函数M文件是另一类M文件,我们可以根据需要建立自己的函数文件,它们能够像库函数一样方便地调用,从而极大地扩展MATLAB的能力。如果对于一类特殊的问题,建立起许多函数M文件,就能最终形成独立的工具箱。

函数M文件的第一行有特殊的要求,其形式必须为

function  <因变量>= <函数名>(<自变量>)

    其他各行为从自变量计算因变量的语句,并最终将结果赋予因变量。而这个M文件的文件名必须是<函数名>.m。下面给出函数文件的一个简单例子。

    如果我们要在某个程序中要调用函数e,就必须建立并保存下面的名为fun.m的函数M文件。

function y = fun(x)

y = exp((-x.^2)./2)./(sqrt(2*pi));

然后在MATLAB工作窗口中输入程序:

>>  [Q1,FCNT14] = quad(@fun,0,pi/2,1.e-14,3) % quad是一个计算数值积分的程序名

运行后屏幕显示计算的部分结果如下:

…………………………………………………………………………

551   1.5441340226  1.33311521e-002   0.0015978928

553   1.5574651747  1.33311521e-002   0.0015650585

Q1 =

   0.44188501721659

FCNT14 =

   553

符号 % 后面是注释部分,给出了这个程序的说明,MATLAB执行时忽略这些内容。实际上MATLAB的所有函数都有这样一段注释。

    函数M文件有多个因变量时,要用[]将它们括起来,请看下面数值积分程序quad.m的部分内容:

    function [Q,fcnt] = quad(funfcn,a,b,tol,trace,varargin)

%QUAD   Numerically evaluate integral, adaptive Simpson quadrature.

% ............................................

%   [Q,FCNT] = QUAD(...) returns the number of function evaluations.

%

%   QUAD(FUN,A,B,TOL,TRACE) with non-zero TRACE shows the values

%   of [fcnt a b-a Q] during the recursion.

%

%   QUAD(FUN,A,B,TOL,TRACE,P1,P2,...) provides for additional

%   arguments P1, P2, ... to be passed directly to function FUN,

%   FUN(X,P1,P2,...).  Pass empty matrices for TOL or TRACE to

%   use the default values.

%.................................................

f = fcnchk(funfcn);

if nargin < 4 | isempty(tol), tol = 1.e-6; end;

if nargin < 5 | isempty(trace), trace = 0; end;

% Initialize with three unequal subintervals.

h = 0.13579*(b-a);

x = [a a+h a+2*h (a+b)/2 b-2*h b-h b];

y = feval(f, x, varargin{:});

fcnt = 7;

% Fudge endpoints to avoid infinities.

if ~isfinite(y(1))

   y(1) = feval(f,a+eps*(b-a),varargin{:});

   fcnt = fcnt+1;

end

if ~isfinite(y(7))

   y(7) = feval(f,b-eps*(b-a),varargin{:});

   fcnt = fcnt+1;

end

% Call the recursive core integrator.

……………………………………………………………………………

其用途不难从注释行知道。

函数M文件中的变量一般是局部变量,它们的变量名独立于目前的工作区和其他的函数。对于5.0以上的版本,在工作区和函数的定义中可以用global 命令把某些变量说明为全局变量。

当MATLAB执行到M文件名的语句时,它首先搜索当前工作区中的变量和内建的命令,然后搜索有无内部函数以此命名,最后在搜索路径的目录中寻找以此命名的M文件。

一般情况下MATLAB不显示M文件中的内容,不过命令 echo on 可以让MATLAB显示M文件中的命令,并且用命令 echo off 关闭显示。在M文件中还可以引用其他M文件,包括递归地引用自己。

欢迎转载,转载请注明来自一手册:http://yishouce.com/book/2/2010301.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1