MatlabM文件编程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 语言中函数的递归调用