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)
阅读全文
0 0
- matlab基础
- MATLAB基础
- matlab基础
- Matlab基础
- MATLAB 基础
- matlab基础
- Matlab 基础
- matlab基础
- matlab基础
- Matlab基础
- Matlab基础
- matlab基础
- MatLab基础
- MATLAB基础
- matlab基础
- matlab基础
- matlab基础
- MATLAB基础
- JavaScript闭包
- 自定义标题栏
- 记录每次更新到本地git仓库
- QT图形框架
- JNI与C++数据类型传递示例(包括ArrayList对象、ArrayList嵌套返回)
- Matlab基础
- shawn的博客开通啦
- react 子元素改变父元素属性
- JavaScript Canvas画布
- PAT 1033. To Fill or Not to Fill (25) 贪心
- Greasy Fork 用户脚本网站 突破百度网盘下载限制
- python学习(五)之dict+set+不可变对象
- opencv学习笔记之彩色目标追踪
- XmlSerializer:成xml文件