matlab基础之脚本与函数

脚本与函数

MATLAB命令的两种执行方式:

  • 交互式命令执行方式
  • 程序执行

要充分利用MATLAB数据结构的特点(矩阵运算、矢量化编程),充分利用MATLAB自带的函数

M文件:

  • 是一个文本文件,拓展名为.m
  • 可以用任何编辑程序来建立和编辑,默认matlab
  • M文件就是将处理问题的各种命令融合到一个文件中

启动MATLAB编辑器的三种方法:

  1. “主页”选项中的新建脚本/双击已有文件/打开命令按钮
  2. 命令行输入edit(既可以新建,也可以打开已有文件)
  3. 命令历史窗口,选中一些命令(按住ctrl可以同时选择多个),从右键快捷菜单中选择“创建脚本”命令,并在编辑区加入所选命令

M文件分类:

  1. 函数文件
  2. 脚本文件
区别 函数文件 脚本文件
输入参数 没有
输出参数 不返回 返回
变量操作 文件所有命令执行结果完全返回到工作空间 执行完毕局部变量被清除
运行 可以直接运行 以函数调方式调用

举例:
建立一个M文件实现a和b的值的互换,2种方式
脚本文件:

a=input('请输入a的值:');
b=input('请输入b的值:');
c=a;
a=b;
b=c;
disp(['a=',num2str(a),'b=',num2str(b)]);

重点:input()函数和disp()函数


函数文件:
function [a,b]=swap(a,b)
c=a;
a=b;
b=c;
return;
end

重点:function和return

  1. 函数文件必须以function开头,以end结尾
  2. 函数文件()填输入参数,[]是输出参数
  3. 调用函数:[a,b]=swap(a,b)返回a和b的值
注释
  1. 单行注释:%
  2. 多行注释:%{ }%
函数文件的可调性
  • 调用函数时,MATLAB用两个永久变量nargin和nargout记录函数的输入参数和输出参数个数
  • 只要在函数文件包含这两个变量,就可以知道函数被调用时,输入参数和输出参数个数
    例子:
function fout=charray(a,b,c)
if nargin==1
fout=a;
elseif nargin==2
fout=[a,b];
elseif nargin==3
fout=[a,b,c];
end
return;
全局变量和局部变量
  • 函数文件中的变量是局部的,即在一个函数文件中定义的变量只能在该函数文件中使用,不能在别的函数使用
  • 如果要在若干个函数之间共享变量,可以将变量定义为全局变量
  • 全局变量用global命令定义,如:global a b
    例子:
    先建立函数文件wadd.m
    该函数将输入的参数加权相加:
function f=wadd(a,b)
global m n
f=m*a+n*b;
return;
end

命令行输入:

global m n
m=2;
n=3;
wadd(1,2)

函数的递归调用:

函数可以调用自己、调用他人
利用函数的递归,求n的阶乘:

function f=factorial(n)
if n<=0 
f=1;
else
f=n*factorial(n-1);
end

特殊形式函数:

1. 子函数
  • 可以在M文件同时定义多个函数
  • M文件出现的第一个函数称为主函数,其他函数称为子函数
  • 子函数只能由同一M文件调用,不能被其他文件调用
  • 函数名与主函数相同
    例如:
function d=func(a,b,c)
d=subfunc(a,b)+c;
end
function f=subfunc(a,b)
f=a*b;
end
2. 内联函数
  • 以字符串形式存在的函数表达式可以通过inline函数转换为内联函数
  • 例如:a=“x+y”,可以通过inline(a)转换为内联函数f(x,y)=x+y
a='(x+y)^2';
b=inline(a);
b(2,3)
3. 匿名函数
  • 匿名函数基本格式:函数名=@(x,y)x+y
  • 输入参数用逗号隔开
程序优化和调试

程序调试方法:

  • 程序错误有两类:语法错误和运行错误
  • 语法错误包括词法或文法错误,例如函数名拼写错、表达式写错等
  • 程序运行错误是指运行错误,例如变量未定义、函数调用错误等,称为程序逻辑错误
  • 利用调试函数
  • 利用调试工具

你可能感兴趣的:(matlab学习(自用,matlab,数据结构,算法)