Matlab入门-M语言
MATLAB 9.8 基础教程 第7章 M文件与MLX文件

所有数据。在运行过程中,产生的所有变量均是工作区变量,这些变量一旦生成,就一直保持
在工作区中,除非执行clear命令将它们清除。
运行一个脚本文件等价于从命令行窗口中顺序运行文件里的语句。由于脚本文件只是一串命
令的集合,因此,只需像在命令行窗口中输入语句那样,依次将语句编辑在脚本文件中,然后
在MATLAB命令行窗口输入该命令文件的名字就会顺序执行命令文件中的命令。
>> type std
则显示内容如下:
பைடு நூலகம்
function y = std(varargin)
函数定义行
%STD Standard deviation.
H1行
以下注释行都是帮助文本
% For vectors, Y = STD(X) returns the standard deviation. For matrices,
7.1.3 函数M文件
函数M文件是第一个可执行语句以function开始的M文件,每一个函数文件都定义一个函数,它可 以接受参数、也可以返回参数。函数文件内定义的变量是局部变量,只在函数文件内部起作用, 当函数文件执行完后,这些内部变量将被清除。在一般情况下,用户不能靠单独输入其文件名来 运行函数文件,而必须由其它语句来调用。事实上,MATLAB提供的标准函数大部分都是由函数 文件定义的。
第7章 M文件与MLX文件
7.1 M文件
当用户要运行的命令较多或需要反复运行多条命令时,若在MATLAB命令行窗口中直接从键盘逐行 输入命令会显得比较麻烦,这时建立一个M文件则可以较好地解决这一问题。
7.1.1 M文件的建立与运行
M文件可以用任何程序建立和编辑,且在MATLAB提供的M文件编辑器窗口实现。
matlab m语言大全

csch 双曲余割cumsum 元素累计和cumtrapz 累计梯形积分cylinder 创建圆柱D ddblquad 二重数值积分deal 分配宗量deblank 删去串尾部的空格符dec2base 十进制转换为X进制dec2bin 十进制转换为二进制dec2hex 十进制转换为十六进制deconv 多项式除、解卷delaunay Delaunay 三角剖分del2 离散Laplacian差分demo Matlab演示det 行列式diag 矩阵对角元素提取、创建对角阵diary Matlab指令窗文本内容记录diff 数值差分、符号微分digits 符号计算中设置符号数值的精度dir 目录列表disp 显示数组display 显示对象内容的重载函数dlinmod 离散系统的线性化模型dmperm 矩阵Dulmage-Mendelsohn 分解dos 执行DOS 指令并返回结果double 把其他类型对象转换为双精度数值drawnow 更新事件队列强迫Matlab刷新屏幕dsolve 符号计算解微分方程E eecho M文件被执行指令的显示edit 启动M文件编辑器eig 求特征值和特征向量eigs 求指定的几个特征值end 控制流FOR等结构体的结尾元素下标eps 浮点相对精度error 显示出错信息并中断执行errortrap 错误发生后程序是否继续执行的控制erf 误差函数erfc 误差补函数erfcx 刻度误差补函数erfinv 逆误差函数errorbar 带误差限的曲线图etreeplot 画消去树eval 串演算指令evalin 跨空间串演算指令exist 检查变量或函数是否已定义exit 退出Matlab环境exp 指数函数expand 符号计算中的展开操作expint 指数积分函数expm 常用矩阵指数函数expm1 Pade法求矩阵指数expm2 Taylor法求矩阵指数expm3 特征值分解法求矩阵指数eye 单位阵ezcontour 画等位线的简捷指令ezcontourf 画填色等位线的简捷指令ezgraph3 画表面图的通用简捷指令ezmesh 画网线图的简捷指令ezmeshc 画带等位线的网线图的简捷指令ezplot 画二维曲线的简捷指令ezplot3 画三维曲线的简捷指令ezpolar 画极坐标图的简捷指令ezsurf 画表面图的简捷指令ezsurfc 画带等位线的表面图的简捷指令F ffactor 符号计算的因式分解feather 羽毛图feedback 反馈连接feval 执行由串指定的函数fft 离散Fourier变换fft2 二维离散Fourier变换fftn 高维离散Fourier变换fftshift 直流分量对中的谱fieldnames 构架域名figure 创建图形窗fill3 三维多边形填色图find 寻找非零元素下标findobj 寻找具有指定属性的对象图柄findstr 寻找短串的起始字符下标findsym 机器确定内存中的符号变量finverse 符号计算中求反函数fix 向零取整flag 红白蓝黑交错色图阵fliplr 矩阵的左右翻转flipud 矩阵的上下翻转flipdim 矩阵沿指定维翻转floor 向负无穷取整flops 浮点运算次数flow Matlab提供的演示数据fmin 求单变量非线性函数极小值点(旧版)fminbnd 求单变量非线性函数极小值点fmins 单纯形法求多变量函数极小值点(旧版)fminunc 拟牛顿法求多变量函数极小值点fminsearch 单纯形法求多变量函数极小值点fnder 对样条函数求导fnint 利用样条函数求积分fnval 计算样条函数区间内任意一点的值fnplt 绘制样条函数图形fopen 打开外部文件for 构成for环用format 设置输出格式fourier Fourier 变换fplot 返函绘图指令fprintf 设置显示格式fread 从文件读二进制数据fsolve 求多元函数的零点full 把稀疏矩阵转换为非稀疏阵funm 计算一般矩阵函数funtool 函数计算器图形用户界面fzero 求单变量非线性函数的零点G ggamma 函数gammainc 不完全函数gammaln 函数的对数gca 获得当前轴句柄gcbo 获得正执行"回调"的对象句柄gcf 获得当前图对象句柄gco 获得当前对象句柄geomean 几何平均值get 获知对象属性getfield 获知构架数组的域getframe 获取影片的帧画面ginput 从图形窗获取数据global 定义全局变量gplot 依图论法则画图gradient 近似梯度gray 黑白灰度grid 画分格线griddata 规则化数据和曲面拟合gtext 由鼠标放置注释文字guide 启动图形用户界面交互设计工具H hharmmean 调和平均值help 在线帮助helpwin 交互式在线帮助helpdesk 打开超文本形式用户指南hex2dec 十六进制转换为十进制hex2num 十六进制转换为浮点数hidden 透视和消隐开关hilb Hilbert矩阵hist 频数计算或频数直方图histc 端点定位频数直方图histfit 带正态拟合的频数直方图hold 当前图上重画的切换开关horner 分解成嵌套形式hot 黑红黄白色图hsv 饱和色图I iif-else-elseif 条件分支结构ifft 离散Fourier反变换ifft2 二维离散Fourier反变换ifftn 高维离散Fourier反变换ifftshift 直流分量对中的谱的反操作ifourier Fourier反变换i, j 缺省的"虚单元"变量ilaplace Laplace反变换imag 复数虚部image 显示图象imagesc 显示亮度图象imfinfo 获取图形文件信息imread 从文件读取图象imwrite 把imwrite 把图象写成文件ind2sub 单下标转变为多下标inf 无穷大info MathWorks公司网点地址inline 构造内联函数对象inmem 列出内存中的函数名input 提示用户输入inputname 输入宗量名int 符号积分int2str 把整数数组转换为串数组interp1 一维插值interp2 二维插值interp3 三维插值interpn N维插值interpft 利用FFT插值intro Matlab自带的入门引导inv 求矩阵逆invhilb Hilbert矩阵的准确逆ipermute 广义反转置isa 检测是否给定类的对象ischar 若是字符串则为真isequal 若两数组相同则为真isempty 若是空阵则为真isfinite 若全部元素都有限则为真isfield 若是构架域则为真isglobal 若是全局变量则为真ishandle 若是图形句柄则为真ishold 若当前图形处于保留状态则为真isieee 若计算机执行IEEE规则则为真isinf 若是无穷数据则为真isletter 若是英文字母则为真islogical 若是逻辑数组则为真ismember 检查是否属于指定集isnan 若是非数则为真isnumeric 若是数值数组则为真isobject 若是对象则为真isprime 若是质数则为真isreal 若是实数则为真isspace 若是空格则为真issparse 若是稀疏矩阵则为真isstruct 若是构架则为真isstudent 若是Matlab学生版则为真iztrans 符号计算Z反变换J j , K kjacobian 符号计算中求Jacobian 矩阵jet 蓝头红尾饱和色jordan 符号计算中获得Jordan标准型keyboard 键盘获得控制权kron Kronecker乘法规则产生的数组L llaplace Laplace变换lasterr 显示最新出错信息lastwarn 显示最新警告信息leastsq 解非线性最小二乘问题(旧版)legend 图形图例lighting 照明模式line 创建线对象lines 采用plot 画线色linmod 获连续系统的线性化模型linmod2 获连续系统的线性化精良模型linspace 线性等分向量ln 矩阵自然对数load 从MAT文件读取变量log 自然对数log10 常用对数log2 底为2的对数loglog 双对数刻度图形logm 矩阵对数logspace 对数分度向量lookfor 按关键字搜索M文件lower 转换为小写字母lsqnonlin 解非线性最小二乘问题lu LU分解M mmad 平均绝对值偏差magic 魔方阵maple &nb, sp; 运作Maple格式指令mat2str 把数值数组转换成输入形态串数组material 材料反射模式max 找向量中最大元素mbuild 产生EXE文件编译环境的预设置指令mcc 创建MEX或EXE文件的编译指令mean 求向量元素的平均值median 求中位数menuedit 启动设计用户菜单的交互式编辑工具mesh 网线图meshz 垂帘网线图meshgrid 产生"格点"矩阵methods 获知对指定类定义的所有方法函数mex 产生MEX文件编译环境的预设置指令mfunlis 能被mfun计算的MAPLE经典函数列表mhelp 引出Maple的在线帮助min 找向量中最小元素mkdir 创建目录mkpp 逐段多项式数据的明晰化mod 模运算more 指令窗中内容的分页显示movie 放映影片动画moviein 影片帧画面的内存预置mtaylor 符号计算多变量Taylor级数展开N nndims 求数组维数NaN 非数(预定义)变量nargchk 输入宗量数验证nargin 函数输入宗量数nargout 函数输出宗量数ndgrid 产生高维格点矩阵newplot 准备新的缺省图、轴nextpow2 取最接近的较大2次幂nnz 矩阵的非零元素总数nonzeros 矩阵的非零元素norm 矩阵或向量范数normcdf 正态分布累计概率密度函数normest 估计矩阵2范数norminv 正态分布逆累计概率密度函数normpdf 正态分布概率密度函数normrnd 正态随机数发生器notebook 启动Matlab和Word的集成环境null 零空间num2str 把非整数数组转换为串numden 获取最小公分母和相应的分子表达式nzmax 指定存放非零元素所需内存O oode1 非Stiff 微分方程变步长解算器ode15s Stiff 微分方程变步长解算器ode23t 适度Stiff 微分方程解算器ode23tb Stiff 微分方程解算器ode45 非Stiff 微分方程变步长解算器odefile ODE 文件模板odeget 获知ODE 选项设置参数odephas2 ODE 输出函数的二维相平面图odephas3 ODE 输出函数的三维相空间图odeplot ODE 输出函数的时间轨迹图odeprint 在Matlab指令窗显示结果odeset 创建或改写ODE选项构架参数值ones 全1数组optimset 创建或改写优化泛函指令的选项参数值orient 设定图形的排放方式orth 值空间正交化P ppack 收集Matlab内存碎块扩大内存pagedlg 调出图形排版对话框patch 创建块对象path 设置Matlab搜索路径的指令pathtool 搜索路径管理器pause 暂停pcode 创建预解译P码文件pcolor 伪彩图peaks Matlab提供的典型三维曲面permute 广义转置pi (预定义变量)圆周率pie 二维饼图pie3 三维饼图pink 粉红色图矩阵pinv 伪逆plot 平面线图plot3 三维线图plotmatrix 矩阵的散点图plotyy 双纵坐标图poissinv 泊松分布逆累计概率分布函数poissrnd 泊松分布随机数发生器pol2cart 极或柱坐标变为直角坐标polar 极坐标图poly 矩阵的特征多项式、根集对应的多项式poly2str 以习惯方式显示多项式poly2sym 双精度多项式系数转变为向量符号多项式polyder 多项式导数polyfit 数据的多项式拟合polyval 计算多项式的值polyvalm 计算矩阵多项式pow2 2的幂ppval 计算分段多项式pretty 以习惯方式显示符号表达式print 打印图形或SIMULINK模型printsys 以习惯方式显示有理分式prism 光谱色图矩阵procread 向MAPLE输送计算程序profile 函数文件性能评估器propedit 图形对象属性编辑器pwd 显示当前工作目录Q qquad 低阶法计算数值积分quad8 高阶法计算数值积分(QUADL) quit 推出Matlab 环境quiver 二维方向箭头图quiver3 三维方向箭头图R rrand 产生均匀分布随机数randn 产生正态分布随机数randperm 随机置换向量range 样本极差rank 矩阵的秩rats 有理输出rcond 矩阵倒条件数估计real 复数的实部reallog 在实数域内计算自然对数realpow 在实数域内计算乘方realsqrt 在实数域内计算平方根realmax 最大正浮点数realmin 最小正浮点数rectangle 画"长方框"rem 求余数repmat 铺放模块数组reshape 改变数组维数、大小residue 部分分式展开return 返回ribbon 把二维曲线画成三维彩带图rmfield 删去构架的域roots 求多项式的根rose 数扇形图rot90 矩阵旋转90度rotate 指定的原点和方向旋转rotate3d 启动三维图形视角的交互设置功能round 向最近整数圆整rref 简化矩阵为梯形形式rsf2csf 实数块对角阵转为复数特征值对角阵rsums Riemann和S ssave 把内存变量保存为文件scatter 散点图scatter3 三维散点图sec 正割sech 双曲正割semilogx X轴对数刻度坐标图semilogy Y轴对数刻度坐标图series 串联连接set 设置图形对象属性setfield 设置构架数组的域setstr 将ASCII码转换为字符的旧版指令sign 根据符号取值函数signum 符号计算中的符号取值函数sim 运行SIMULINK模型simget 获取SIMULINK模型设置的仿真参数simple 寻找最短形式的符号解simplify 符号计算中进行简化操作simset 对SIMULINK模型的仿真参数进行设置simulink 启动SIMULINK模块库浏览器sin 正弦sinh 双曲正弦size 矩阵的大小slice 立体切片图solve 求代数方程的符号解spalloc 为非零元素配置内存sparse 创建稀疏矩阵spconvert 把外部数据转换为稀疏矩阵spdiags 稀疏对角阵spfun 求非零元素的函数值sph2cart 球坐标变为直角坐标sphere 产生球面spinmap 色图彩色的周期变化spline 样条插值spones 用1置换非零元素sprandsym 稀疏随机对称阵sprank 结构秩spring 紫黄调春色图sprintf 把格式数据写成串spy 画稀疏结构图sqrt 平方根sqrtm 方根矩阵squeeze 删去大小为1的"孤维"sscanf 按指定格式读串stairs 阶梯图std 标准差stem 二维杆图step 阶跃响应指令str2double 串转换为双精度值str2mat 创建多行串数组str2num 串转换为数strcat 接成长串strcmp 串比较strjust 串对齐strmatch 搜索指定串strncmp 串中前若干字符比较strrep 串替换strtok 寻找第一间隔符前的内容struct 创建构架数组struct2cell 把构架转换为元胞数组strvcat 创建多行串数组sub2ind 多下标转换为单下标subexpr 通过子表达式重写符号对象subplot 创建子图subs 符号计算中的符号变量置换subspace 两子空间夹角sum 元素和summer 绿黄调夏色图superiorto 设定优先级surf 三维着色表面图surface 创建面对象surfc 带等位线的表面图surfl 带光照的三维表面图surfnorm 空间表面的法线svd 奇异值分解svds 求指定的若干奇异值switch-case-otherwise 多分支结构sym2poly 符号多项式转变为双精度多项式系数向量symmmd 对称最小度排序symrcm 反向Cuthill-McKee排序syms 创建多个符号对象T ttan 正切tanh 双曲正切taylortool 进行Taylor逼近分析的交互界面text 文字注释tf 创建传递函数对象tic 启动计时器title 图名toc 关闭计时器trapz 梯形法数值积分treelayout 展开树、林treeplot 画树图tril 下三角阵trim 求系统平衡点trimesh 不规则格点网线图trisurf 不规则格点表面图triu 上三角阵try-catch 控制流中的Try-catch结构type 显示M文件U uuicontextmenu 创建现场菜单uicontrol 创建用户控件uimenu 创建用户菜单unmkpp 逐段多项式数据的反明晰化unwrap 自然态相角upper 转换为大写字母V vvar 方差varargin 变长度输入宗量varargout 变长度输出宗量vectorize 使串表达式或内联函数适于数组运算ver 版本信息的获取view 三维图形的视角控制voronoi Voronoi多边形vpa 任意精度(符号类)数值W wwarning 显示警告信息what 列出当前目录上的文件whatsnew 显示Matlab中Readme文件的内容which 确定函数、文件的位置while 控制流中的While环结构white 全白色图矩阵whitebg 指定轴的背景色who 列出内存中的变量名whos 列出内存中变量的详细信息winter 蓝绿调冬色图workspace 启动内存浏览器X x , Y y , Z zxlabel X轴名xor 或非逻辑yesinput 智能输入指令ylabel Y轴名zeros 全零数组zlabel Z轴名zoom 图形的变焦放大和缩小ztrans 符号计算Z变换。
MATLAB初学者语言基础

▪ 在命令窗口使用help组合命令。当用户知道函数名称想了解其具体用法时,可 以在命令窗口使用help命令,调用方法是help 函数名,例如:
>> help inv
❖ lookfor命令
▪ 在命令窗口使用lookfor组合命令。注意,help 命令要求函数名的精确匹配,而 lookfor只要求与每个函数中的总结信息有匹配。所以当用户不知道函数的确切 名称时可以使用lookfor命令 ,例如找矩阵求逆函数可以输入:
>> 3.14*3^2
ans =
28.2600
▪ 当遇到较为复杂的问题时,可以采用给变量赋值的方法,例如:可以用变量r来表示圆的
半径,用变量S来表示圆的面积,百分号“%”是MATLAB中的注释符
>> r=3
%圆的半径r=3
r=
3
>> S=3.14*r^2 %求圆的面积S
S=
28.2600
▪ 在命令窗口输入r=3并按下Enter键后,MATLAB会在命令窗口直接显示这条命令的计算 结果,若要禁止显示计算的中间结果,则可以通过分号“;”来实现,例如:
❖ 产生与发展
▪ 雏形——基于特征计算的程序库EISPACK和线性代数程序库LINPACK ▪ 免费软件->MathWorks公司 ▪ 演变成为一种具有广泛应用前景的全新的计算机高级编程语言
❖ 优势
▪ 强大易用的科学计算语言 ▪ 全面的图形功能 ▪ 独立开放的平台 ▪ 实用的程序接口
命令窗口 当前目录窗口
❖ 编辑搜索路径的常用命令
>> path
%显示所有搜索路径
>> addpath
%增加目录到MATLAB搜索路径。
matlab m 编程语言

matlab m 编程语言Matlab M编程语言是一种高级的数值计算和编程环境,其提供了丰富的函数和工具箱,用于科学计算、数据分析、图像处理等各个领域。
本文将介绍Matlab M编程语言的基本语法和常用功能。
一、基本语法Matlab M编程语言的基本语法类似于其他编程语言,包括变量的定义和赋值、条件语句、循环语句等。
下面以一个简单的例子来说明基本语法:```matlab% 定义变量a = 10;b = 20;% 条件语句if a > bdisp('a大于b');elseif a < bdisp('a小于b');elsedisp('a等于b');end% 循环语句for i = 1:5disp(i);end```二、常用函数和工具箱Matlab M编程语言提供了丰富的函数和工具箱,用于各种科学计算和数据处理任务。
下面列举一些常用的函数和工具箱:1. 统计工具箱:用于统计分析和数据建模,包括描述统计、假设检验、回归分析等功能。
2. 图像处理工具箱:用于图像处理和计算机视觉任务,包括图像滤波、边缘检测、图像分割等功能。
3. 信号处理工具箱:用于信号处理和数字信号处理任务,包括滤波、频谱分析、时频分析等功能。
4. 控制系统工具箱:用于控制系统分析和设计,包括传递函数表示、稳定性分析、控制器设计等功能。
5. 优化工具箱:用于优化问题的建模和求解,包括线性规划、非线性规划、整数规划等功能。
三、应用实例Matlab M编程语言在科学计算和工程应用中有广泛的应用。
下面举两个实际应用的例子:1. 图像处理:利用Matlab M编程语言中的图像处理工具箱,可以对图像进行各种处理和分析。
例如,可以对医学影像进行图像增强,提取感兴趣区域,进行图像分割等操作。
2. 机器学习:Matlab M编程语言提供了丰富的机器学习工具箱,可以用于分类、聚类、回归等任务。
例如,可以利用支持向量机对数据进行分类,利用神经网络进行回归分析等。
第二章_MATLAB语言基础_第1节-赵亦欣

第2章 MATLAB语言基础
【例2.8】 表达式语句。 >> sqrt(2)*exp(-1*3) ans = 0.0704 >> 8*3+6/4 ans = 25.5000
表达式语句 运算结果 执行下一条 表达式语句 后,结果将 被刷新
第2章 MATLAB语言基础
第2章 MATLAB语言基础
2.1 基础知识
2.1.3 变量和语句
变量名区分字母大小写;不超过31个字 符,31个以后的字符将被忽略,字符之间不 能有空格;必须以字母打头,之后可以是任意 字母、数字或下画线;不允许使用标点符号。
第2章 MATLAB语言基础
MATLAB的一条命令行就是一条语句,
格式与书写数学表达式相近。 在命令窗输入语句,该语句可被解释运 行并给出运行结果。
第2章 MATLAB语言基础
(1)永久变量不能用clear命令清除; (2)永久变量不响应Who, Whos命令; (3)永久变量可以等于表2-1中的值; (4)被赋值的永久变量,在clear命令清除内 存或命令窗关闭再打开后,将被设为默认值;
(5)允许被0除。
第2章 MATLAB语言基础
2.1 基础知识
第2章 MATLAB语言基础
【例2.11】复数矩阵的生成及运算。 >> A=[1 2; 3 4]+[5 6; 7 8]*I % 复数矩阵的输入。 分别由实部矩阵和虚部矩阵组合而成 A= 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i >> B=[1+2i 3+4i; 5+6i 7+8i] % 复数矩阵的输入。 直接由复数构成矩阵 B= 1.0000 + 2.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000i >> C=A*B % 复数矩阵相乘。 复数矩阵乘法, 1.0e+002表 示标量100,矩阵运算中,存在直 C= 角坐标和极坐标之间的转换 1.0e+002 * -0.3500 + 0.4900i -0.5100 + 0.7700i -0.3900 + 0.7700i -0.5500 + 1.2100i
matlab基本编程

例
程序如下: function iftow(x) if x>0
fprintf(‘%f is a positive number\n’,x) else
fprintf(‘%f is not a positive number\n’,x) end
例 计算分段函数值。
程序如下: x=input('请输入x的值:'); if x==10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x)); end y
function f = fact(n) %函数的定义行
% Compute a factorial value. %H1行
% FACT(N) returns the factorial of N, %帮助文 本
% usually denoted by N!
% Put simply, FACT(N) is PROD(1:N). %注释
disp(setstr(abs(c)-1)); elseif c>='0'& c<='9'
disp(abs(c)-abs('0')); else
disp(c); end
例 输入数n,判断其奇偶性
程序如下: n = input('n='), if rem(n,2)==0 A = ‘even’ else A = ‘odd’ end
3.多分支if语句 语句格式为: if 条件1
语句组1 elseif 条件2
语句组2
…… elseif 条件m
语句组m
else 语句组m+1
m语言说明

数组就是有序数列的集合。数组的每一个元素都属于同一种类型,它们使用同一个数组名和不同的下标来唯一确定数组中的成员。下标是指数组元素在数组中的序号。
3.向量
从编程语言的角度,向量就是一维数组,从数学的角度看,向量就是1×N或N×1的矩阵,即行向量或列向量。
4.矩阵
在Matlab中,矩阵的概念和线性代数中定义的矩阵的概念是一样的。矩阵使用一对圆括号或方括号括起来,符合一定规则的数学对象。如:
B=
二.创建向量
向量也就是一维数组,在Matlab中创建向量可以使用不同的方法,最简单的方法就是逐个输入向量元素,如
>>x=[1 3 pi 3+5i]
在逐个元素输入时,每个元素之间可以用空格或逗号“,”作为间隔符。
第二种方法就是利用冒号“:”运算符创建向量,如
>>x=1:10
然后用whos查看内存变量。
②使用全下标的形式访问矩阵元素的方法简单、直接,和线性代数中矩阵元素的概念是对应的。
③单下标是矩阵元素在内存中存储的序列号,在Matlab中矩阵元素的排列是以列元素优先,和C语言不同,与Fortran相同。
④单下标和全下标之间的转换关系,以m×n矩阵为例,全下标为i, j的元素其单下标为
另外,Matlab提供了两个函数可以完成它们之间的转换
>>tril(A)
>>triu(A)
2.矩阵的运算
针对矩阵的运算,Matlab提供了若干函数和基本的运算规则,这些规则和函数分别和线性代数中的概念和运算规则是对应的,如下表。
矩阵的基本运算
运算
说明
A’
矩阵转置
A^n
矩阵求幂,n可以为任意数
Matlab入门-M语言培训课件

7、常用的警示指令
(1)error(‘message’) 显示出错信息,终止程序
(2)lasterr 显示matlab自动判断的最新出错原因并终止程序;
(3)warning(‘message’) 显示警告信息,程序继续执行;
(4)lastwarn 显示matlab自动给出的最新警告程序继续运行
捕捉语句实例
矩阵乘法运算要求两矩阵的维数相容,否则会出错。先 求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。
程序如下:
A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12];
try
C=A*B;
catch
C=A.*B;
endClaste Nhomakorabear%显示出错原因并退出
第三节 M文件
✓MATLAB有两种工作方式 交互式的命令行工作方式:用于简单情形 M文件的程序工作方式:用于复杂、重复多的情形 包括: 脚本文件(没有输入参数,也不返回输出参数) 函数文件(可以输入参数,也可返回输出参数)
break语句实例
i = 0; j = 0; k = 0; for i = 1:2
for j = 1:2 for k = 1:2 if (k == 2) disp('退出循环'); break; end str = sprintf('I = %d , J = %d , K =
%d',i,j,k); %Write formatted data to string disp(str);
case 1 disp(‘the input is 1')
case {2,3,4} disp(‘the input is 2 or 3 or 4')
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、参数传递
(一)参数传递有两种方式:
1、形参与实参间的传递(形实结合) 在MATLAB中,参数具有自己的专有工作空间。函数中的 参数和命令行参数不在一个空间中,它们的唯一联系为函数的 输入输出变量。输入参数在函数中是可读的,但任何改动不会 传递回上一级空间。
2、全局变量 使用global命令可以将变量说明为全局的,则在函数、命令 行等都可以共享这些变量。
全局变量
定义语句 global A;
全局变量A允许不同的函数空间以及基本空间共享,但需要专 门定义,否则被当为局部变量;允许在多个函数中对同名变量 定义全局变量,所有的函数都可对其存取和修改。因此,定义 全局变量是函数间传递信息的一种手段。 除非与全局变量关联的所有工作空间都被删除,否则全局变量 依然存在; 对全局变量的定义必须在该变量被使用之前,并建议把全局变 量的定义放在函数的首行位置。
第一节
一、基本规则概要 1、变量和常量
M语言规则
字母开头,后跟字母数字或下划线; 大小写敏感。 2、注释(%后) 3、语句的分隔:分号、续行符
4、矩阵
标量、向量、数组(二维、三维、多维) 5、元素的访问
x(k)、a1(i,j)、c(end)、xyz(i,:)、y4z(:,j)
二、运算
点运算有:
.*
else (关系运算表达式c)
… end MATLAB语句C
if语句实例 clear all I=1; J=2; if I == J A(I,J) = 2; elseif abs(I-J) == 1 A(I,J) = 1; else A(I,J) = 0; end
二、switch语句
switch (表达式) case 常量表达式a:
三、while语句
while (表达式)
MATLAB语句
end
while语句实例
例: 使用while语句求解 i = 1; sum = 0; while ( i <= 1000 ) sum = sum+i; i = i+1; end
四、for语句
for index = start:step:end MATLAB语句 end
二、函数文件
函数文件是另一种形式的M文件,每一个函数文件都定义一个 函数。事实上,MATLAB提供的标准函数和命令大部分都是由 函数文件定义的。 把一个比较大的任务分解为多个比较小的任务,它们之间通 过调用实现参数传递。 1、函数的定义 函数文件由function语句引导,其格式为: [out1,out2,…]=function(in1,in2,…) 2、函数文件的规则 (1)函数名称和文件名必须相同; (2)一个函数可以嵌套,也可以调用其它的函数,甚至调用 自己(也就是递归调用)。
为提高函数文件的可读性,建议用大写字符命名全局变量;
因全局变量损害了函数的封装特性,建议尽量不用。
【例】 全局变量应用示例
先建立函数文件wadd.m, 该函数将输入的参数加权相 加。 function f=wadd(x,y) %add two variable global ALPHA BETA f=ALPHA*x+BETA*y;
Matlab允许使用比申明变量少的输入输出变量,实现对函数
的调用;
函数运行时,Matlab为它开辟临时工作空间,所有变量均存
放其中。执行完最后一条指令或者遇到return指令时,输出函 数输出值,并清掉临时空间的所有中间变量;即函数空间相对 基本空间而言是独立的、临时的。可以产生任意多个临时函数 空间;
四、子函数和私有函数
1、子函数
Matlab中允许1个文件中包含多个函数的代码; 第一个出现的函数成为主函数,其他函数为子函数;
保存时所用函数文件名应与主函数同名;
外部程序只能调用主函数。
2、子函数的性质 每个子函数的第一行是申明行; 主函数的位置只能在最上面,但子函数的排列位置可以任 意改变; 子函数只能被处于同一文件的主函数和其他子函数调用; 同一文件的主函数、子函数的工作空间都是彼此独立的。 Help,lookfor等帮助指令都找不到子函数的任何帮助信息
6、错误捕捉语句(试探语句)
try 语句段 1 catch 语句段 2 end
本语句结构先试探性的执行try 和catch之间的语句,如果在此执 行的过程中遇到了错误,则把错 误信息赋值给lasterr变量,并放 弃执行这段语句,转而执行catch 和end之间的语句。 为程序员提供一种更为灵活的 编程方法。
MATLAB语句A
case 常量表达式b:
case 常量表达式m:
MATLAB语句B
MATLAB语句M
otherwise:
end
MATLAB语句N
switch语句实例
var = input('Input a Number:'); switch var case 1 disp(‘the input is 1') case {2,3,4} disp(‘the input is 2 or 3 or 4') case 5 disp(‘the input is 5') otherwise disp('something else') end
7、常用的警示指令
(1)error(‘message’) 显示出错信息,终止程序
(2)lasterr 显示matlab自动判断的最新出错原因并终止程序; (3)warning(‘message’) 显示警告信息,程序继续执行; (4)lastwarn 显示matlab自动给出的最新警告程序继续运行
./ .^ .\
第二节
M语言的流程控制
具体包括:
if语句、switch语句
while语句、for语句 break语句
一、if语句
if end (关系运算表达式) MATLAB语句 if (关系运算表达式a) MATLAB语句A elseif (关系运算表达式b) if (关系运算表达式) MATLAB语句A else MATLAB语句B end MATLAB语句B
【例】 nargin用法示例
函数文件charray.m:
function fout=charray(a,b,c) if nargin==1 fout=a; elseif nargin==2 fout=a+b; elseif nargin==3 fout=(a*b*c)/2; end 命令文件exp.m: x=[1:3];y=[1;2;3]; charray (x) charray (x,y') charray (x,y,3) 执行后的输出是: ans = 1 2 3 ans = 2 4 6 ans = 21
for语句实例
例: 使用for语句求解
sum = 0; for i = 1:1000 sum = sum+i; end
五、其它流程控制命令 1、break 退出当前的循环结构运行
2、continue 用于结束本次for 或 while 循环,与break命令不同的是,该 命令只结束本次循环而继续下一次循环
它将打开的文件编译为存储器内部形式,加速了执行速度。普 通的m文件不被编译,在每次编译时,文件将逐行解释执行。
【实例】 利用函数的递归调用,求n!
function f=factor(n) if n<=1 f=1; else f=factor(n-1)*n; end return; %返回
假如在函数文件中调用了一段脚本文件,那该脚本文件运行产
生的所有变量都存放于该函数的临时空间内,而不是存放在基 本空间。
注意函数文件的放置位置,一般自己的函数文件放在当前目录
;如对一个专题有了足够多的函数,可以生成一个工具箱,放 在一个固定的目录下,并在MATLAB中加入这个目录路径。
使用函数可以加快计算速度。MATLAB首次执行一个函数时,
捕捉语句实例
矩阵乘法运算要求两矩阵的维数相容,否则会出错。先 求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 程序如下:
A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12]; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因并退出
第三节
3、input 提示用户从键盘输入数值、字符串和元胞数组,并接受该输入 如: a=input(‘input a number’) %输入一个数值 b=input(‘input a string’,‘s’) %输入一个字符串
break语句实例 i = 0; j = 0; k = 0; for i = 1:2 for j = 1:2 for k = 1:2 if (k == 2) disp('退出循环'); break; end str = sprintf('I = %d , J = %d , K = %d',i,j,k); %Write formatted data to string disp(str); end nd end disp('程序运行结束');
在命令窗口中输入: global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2) 输出为: s= 5 注意:两个变量间 为空格
(二)变量的检测和传递
1、输入输出的检测 MATLAB函数的输入输出数目都可以变化,通过这个特性 ,可以实现一些自定义的功能。 nargin (Number of arguments input):输入变量数; nargout: 输出变量数; nargin(‘fun’): 获取指定函数的标称输入变量数; nargout(‘fun’): 获取指定函数的标称输出变量数; inputname(n): 给出第n个输入变量的实际调用变量名。 函数调用中可以使用少于规定的输入输出参数数目,但是不 能更多。nargin、nargout 和 inputname本身都是函数,而不 是变量,用户不能使用赋值语句改变他们的值。 目的:与程序流程控制指令配合,对于不同数目的输入输出 变量,函数可完成不同的任务;