MatlabM文件编程

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

M文件及程序调试

本章详细讲解利用M语言进行编程的方法讲述的主要内容:

主程序文件

函数文件

M文件的调试

MATLAB的工作模式

(1)指令驱动模式

即在MATLABM命令行窗口下用户输入单行指令

时,MATLAB立即处理这条指令,并显示结果,

这就是MATLAB命令行方式。

缺点:命令行方式程序可读性差,而且不能存

储,当处理复杂问题和大量数据时很不方便。(2)M文件模式

将MATLAB语句构成的程序存储成以m为扩展名的

文件,然后再执行该程序文件,这种工作模式

称为程序文件模式。

M语言文件可以分为主程序文件和函数文件

一个M语言文件就是由若干MATLAB的命令组合在一起构成的。

M语言文件是标准的纯文本格式的文件,其文件扩展名为.m。

MATLAB提供了meditor编辑器编辑M文件

注意:

(1)不可用汉字命名(若用汉字命名虽然可以打开M文件,但是编译运行时会出错);

(2)文件名不可与MATLAB内置函数重名;

(3)文件名不可以以数字命名。

主程序文件(脚本文件)

相当于C语言的主函数

主程序文件没有输入参数和输出参数。

执行主程序文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。

主程序文件主要由注释行和代码行组成: M文件的注释行需要使用%,定义符注释定义符仅能影响一行代码

程序执行的结果将显示于命令窗中

函数文件(相当于C语言的子函数)

函数文件供主程序文件调用,必须指定函数名和输入输出参数,并由主程序文件中语句序列给出一系列操作,从而生成所需数据

函数文件格式一般包括以下部分:

(1)函数定义行:表明该m文件包含一个函数,且为其定义函数名、输入参数和输出参数

function y=mean(x)

(2)帮助信息:处在文件中的第二行,应该反

映该m文件概括性信息

%求平均值

function y=mean(x )

%求平均值

(3)函数体:函数所用计算过程和输入输出参数赋值的MATLAB 代码;

这里可以为调用函数、流程控制、交互式输入输出、计算、赋值等。

[m,n ]=size(x );

if m==1

y=sum(x)/n ;

else

y=sum(x)/m ; %把每一列做平均值运算

end 函数文件例1:求均值

主程序文件调用y=mean(x)的方法

clear;

A=[1,2;3,4]

B=mean(A)

help mean 则在命令窗显示mean函数注释的帮助信息

函数文件例2:比较两个数大小function nummax(a,b)

if(a<=0|b<=0)

disp('input error');

elseif a>b

fprintf('the large number is %f',a);

elseif a

fprintf('the large number is %f',b);

else

fprintf('%f=%f',a,b);

end

function[avg,stdev,r ]=ourstats(x )

% ourstats 多输入输出参数示例

% 该函数计算处理矩阵,得到相应的均值、标准差和矩阵的秩

[m,n]=size(x);

if m==1

m=n;

end

% Average

avg =sum(x)/m;

% Sandad deviation

stdev =sqrt(sum(x.^2)/m -avg.^2);

% Rank

r=rank(x );

函数文件例3:多个输出参数

运行>> A=[1 2 3;4 5 6]A = 1 2 34 5 6>> [a,s,r]=ourstats(A )a = 2.5000 3.5000 4.5000s =

1.5000 1.5000 1.5000r =2>> [a,s]=ourstats(A )a =

2.5000

3.5000

4.5000s = 1.5000 1.5000 1.5000输入输出参数(续)>> a=ourstats(A)a = 2.5000 3.5000 4.5000调用该函数时,将输出参数依次写在一个向量中,若输出参数的个数与函数定义的输出参数个数不一致时,将计算得到的前几个输出参数作为返回值,若输出参数的个数等于指定的输出参数个数时,计算结果依次赋值给不同的变量。

子函数应用例1

function[avg,med ]=newstats(u ) % 主函数% NEWSTATS 计算均值和中间值n=length(u);

avg =mean(u,n); % 调用子函数med=median(u,n); % 调用子函数function a=mean(v,n) % 子函数% 计算平均值a=sum(v)/n;

function m=median(v,n) % 子函数% 计算中间值

w=sort(v ); %从小到大排序if rem(n,2)==1

m=w((n+1)/2);else

m=(w(n/2)+w(n/2+1))/2;end

在函数文件中可以包含多个函数,其中第一个函数称为主函数,其函数名与文件名相同,在M 函数文件中的其他函数称为子函数,它只能由这一函数文件中的主函数或其他子函数引用

子函数:相当于C 语言中函数的递归调用

相关文档
最新文档