Matlab基础

来源:互联网 发布:淘宝无门槛红包设置 编辑:程序博客网 时间:2024/06/02 06:33

Matlab基础

1.M 文件根据调用方式的不同可以分为两类

  • Script:脚本文件,直接输入文件名即可运行
  • Function:函数文件 ,供其它M文件调用,通常带输入参数和输出参数
    • 函数必须是一个单独的M文件
    • 函数文件的文件名必须与函数名一致
file:script.m %脚本文件clear;   f=input('Please input f:');c=5*(f-32)/9;fprintf('c=%g \n', c)file:func.m %函数文件function c=func(f)c=5*(f-32)/9;

2.参数的可调性:nargin 和 nargout 的使用

可以根据输入输出的参数个数来执行不同的语句,例如:

% ex4nargin.mfunction y=ex4nargin(a,b)if nargin==1   y = a;elseif nargin==2   y = a*b;end>> y1=ex4nargin(3)>> y2=ex4nargin(3,4)% ex4nargout.mfunction [p,q]=ex4nargout(a,b)if nargout==1   p=a+b;elseif nargout==2   p=a+b;    q=a-b;end>> x=ex4nargout(5,3)>> [x,y]=ex4nargin(5,3)

3.局部变量与全局变量

  • 局部变量:只能在其被定义的 M 文件中使用
  • 全局变量:可以在多个 M 文件中使用
  • Matlab 中,变量默认是局部变量

关于局部变量:

  • Matlab 中,变量默认是局部变量,即一个M文件中定义的变量不能被其它 M 文件引用
  • 当函数调用完毕后,该函数文件中所定义的所有局部变量都将被释放,即全部被清除
  • 函数通过输入和输出参数与其它 M 文件进行数据传递

关于全局变量:

  • 全局变量的定义或声明 :global 变量名列表
  • 变量名列表中的各个变量用空格隔开,不能用逗号!
  • 在需要使用全局变量的所有M文件中,都要进行声明
  • 定义全局变量是 M文件间传递信息的一种手段

全局变量给函数间的数据传递带来了方便,但却破坏了函数对变量的封装,降低了程序的可读性,因而在结构化程序设计中,全局变量是不受欢迎的。特别是当程序较大,子程序较多时,全局变量将给程序调试和维护带来不便,故一般不提倡使用全局变量

4.主函数与子函数

  • 一个函数文件中可以包含一个或多个函数其中第一个称为主函数,其它函数称为子函数
  • 除全局变量外,所有函数(主函数、子函数)中的变量都是局部变量,函数之间通过输入、输出参数进行数据传递
  • 主函数必须位于最前面,子函数出现的次序任意
  • 子函数只能被主函数和位于同一个M文件中的其它子函数调用
  • 外部 M 文件只能调用主函数

5.函数句柄

  • 相当于函数指针,调用函数句柄就等价于调用该函数。
  • 函数句柄的定义:fhandle=@ 函数名
  • @ 的作用就是将一个函数的函数句柄赋值给左边的变量
f = @sin;y = f(pi/3)

6.内联函数

  • MATLAB中的内联函数借鉴了C语言中的内联函数,使用内联函数可以减少调用的时间和空间开销。
  • 内联函数的定义:函数名=inline('函数表达式', '变量1', '变量2',...)
  • 由于内联函数是储存于内存中而不是在M文件中,省去了文件访问的时间,加快了程序的运行效率。
  • 但内联函数只能定义一些简单的函数表达式。
  • 若调用函数时涉及数组运算,则定义函数时也要用数组运算!
f=inline('x^2 + y^2','x','y');y=f(2,3)

7.匿名函数

  • 匿名函数是 Matlab 7.0 版提出的一种全新的函数描述形式,和内联函数类似,可以让用户编写简单的函数而不需要创建M文件;它具有内联函数的所有优点,并且效率比内联函数高。
  • 匿名函数的定义:fhandle=@ (输入参数列表)运算表达式
f=@(x,y) x^2 + y^2;  y=f(2,3% 匿名函数支持变量替换p=3; q=5;f=@(x,y) x^p + y^q;y=f(2,3)p=2; q=4;f=@(x,y) x^p + y^q; % 当参数发生改变时,函数必须重新定义y=f(2,3) %若调用函数时涉及数组运算,则定义函数时也需要使用数组运算f=@(x) x.^2 + 1;x=1:5;y=f(x)
原创粉丝点击