1、MATLAB 包 括 拥 有 数 百 个 内 部 函 数 的 主 包 和 三 十 几 种 工 具 包 。 工 具 包 又 可 以 分 为 功 能性 工 具 包 和 学 科 工 具 包 。 功 能 工 具 包 用 来 扩 充 MATLAB 的 符 号 计 算 , 可 视 化 建 模 仿真 , 文 字 处 理 及 实 时 控 制 等 功 能 。 学 科 工 具 包 是 专 业 性 比 较 强 的 工 具 包 , 控 制 工 具 包 ,信 号 处 理 工 具 包 , 通 信 工 具 包 等 都 属 于 此 类 。开 放 性 使 MATLAB 广 受 用 户 欢 迎 。 除 内 部 函 数 外 , 所
2、 有 MATLAB 主 包 文 件 和 各种 工 具 包 都 是 可 读 可 修 改 的 文 件 , 用 户 通 过 对 源 程 序 的 修 改 或 加 入 自 己 编 写 程 序 构 造 新的 专 用 工 具 包 。Matlab Main Toolboxmatlab 主 工 具 箱Control System Toolbox控 制 系 统 工 具 箱Communication Toolbox通 讯 工 具 箱Financial Toolbox财 政 金 融 工 具 箱System Identification Toolbox系 统 辨 识 工 具 箱Fuzzy Logic Toolbox模
3、糊 逻 辑 工 具 箱Higher-Order Spectral Analysis Toolbox高 阶 谱 分 析 工 具 箱Image Processing Toolbox图 象 处 理 工 具 箱LMI Control Toolbox线 性 矩 阵 不 等 式 工 具 箱Model predictive Control Toolbox模 型 预 测 控 制 工 具 箱-Analysis and Synthesis Toolbox 分 析 工 具 箱Neural Network Toolbox神 经 网 络 工 具 箱Optimization Toolbox优 化 工 具 箱Partial
4、 Differential Toolbox偏 微 分 方 程 工 具 箱Robust Control Toolbox鲁 棒 控 制 工 具 箱Signal Processing Toolbox信 号 处 理 工 具 箱Spline Toolbox样 条 工 具 箱Statistics Toolbox统 计 工 具 箱Symbolic Math Toolbox符 号 数 学 工 具 箱Simulink Toolbox动 态 仿 真 工 具 箱Wavele Toolbox小 波 工 具 箱 常 用 函 数Matlab 内 部 常 数 3eps: 浮 点 相 对 精 度 exp: 自 然 对 数 的
5、 底 数 e i 或 j: 基 本 虚 数 单 位 inf 或 Inf: 无 限 大 , 例 如 1/0nan 或 NaN: 非 数 值 ( Not a number) , 例 如 0/0pi: 圆 周 率 p( = 3.1415926.)realmax: 系 统 所 能 表 示 的 最 大 数 值realmin: 系 统 所 能 表 示 的 最 小 数 值nargin: 函 数 的 输 入 引 数 个 数nargout: 函 数 的 输 出 引 数 个 数lasterr: 存 放 最 新 的 错 误 信 息lastwarn: 存 放 最 新 的 警 告 信 息MATLAB 常 用 基 本 数
6、 学 函 数abs(x): 纯 量 的 绝 对 值 或 向 量 的 长 度angle(z): 复 数 z 的 相 角 (Phase angle)sqrt(x): 开 平 方 real(z): 复 数 z 的 实 部imag(z): 复 数 z 的 虚 部conj(z): 复 数 z 的 共 轭 复 数round(x): 四 舍 五 入 至 最 近 整 数fix(x): 无 论 正 负 , 舍 去 小 数 至 最 近 整 数floor(x): 地 板 函 数 , 即 舍 去 正 小 数 至 最 近 整 数ceil(x): 天 花 板 函 数 , 即 加 入 正 小 数 至 最 近 整 数rat(
7、x): 将 实 数 x 化 为 分 数 表 示rats(x): 将 实 数 x 化 为 多 项 分 数 展 开sign(x): 符 号 函 数 (Signum function)。当 x0 时 , sign(x)=1。rem(x,y): 求 x 除 以 y 的 馀 数gcd(x,y): 整 数 x 和 y 的 最 大 公 因 数lcm(x,y): 整 数 x 和 y 的 最 小 公 倍 数exp(x) : 自 然 指 数pow2(x): 2 的 指 数log(x): 以 e 为 底 的 对 数 , 即 自 然 对 数 或log2(x): 以 2 为 底 的 对 数log10(x): 以 10
8、为 底 的 对 数MATLAB 常 用 三 角 函 数sin(x): 正 弦 函 数cos(x): 余 弦 函 数tan(x): 正 切 函 数asin(x): 反 正 弦 函 数acos(x): 反 余 弦 函 数atan(x): 反 正 切 函 数atan2(x,y): 四 象 限 的 反 正 切 函 数sinh(x): 双 曲 正 弦 函 数cosh(x): 双 曲 余 弦 函 数tanh(x): 双 曲 正 切 函 数asinh(x): 反 双 曲 正 弦 函 数acosh(x): 反 双 曲 余 弦 函 数atanh(x): 反 双 曲 正 切 函 数适 用 于 向 量 的 常 用
9、函 数 有min(x): 向 量 x 的 元 素 的 最 小 值max(x): 向 量 x 的 元 素 的 最 大 值mean(x): 向 量 x 的 元 素 的 平 均 值median(x): 向 量 x 的 元 素 的 中 位 数std(x): 向 量 x 的 元 素 的 标 准 差diff(x): 向 量 x 的 相 邻 元 素 的 差sort(x): 对 向 量 x 的 元 素 进 行 排 序 ( Sorting)length(x): 向 量 x 的 元 素 个 数norm(x): 向 量 x 的 欧 氏 ( Euclidean) 长 度sum(x): 向 量 x 的 元 素 总 和p
10、rod(x): 向 量 x 的 元 素 总 乘 积cumsum(x): 向 量 x 的 累 计 元 素 总 和cumprod(x): 向 量 x 的 累 计 元 素 总 乘 积dot(x, y): 向 量 x 和 y 的 内 积cross(x, y): 向 量 x 和 y 的 外 积MATLAB 基 本 绘 图 函 数plot: x 轴 和 y 轴 均 为 线 性 刻 度 ( Linear scale)loglog: x 轴 和 y 轴 均 为 对 数 刻 度 ( Logarithmic scale)semilogx: x 轴 为 对 数 刻 度 , y 轴 为 线 性 刻 度semilogy
11、: x 轴 为 线 性 刻 度 , y 轴 为 对 数 刻 度matlab 插 值 和 样 条plot 绘 图 函 数 的 参 数字 元 颜 色 字 元 图 线 型 态y 黄 色 . 点 k 黑 色 o 圆w 白 色 x x b 蓝 色 + +g 绿 色 * * r 红 色 - 实 线c 亮 青 色 : 点 线m 锰 紫 色 -. 点 虚 线- 虚 线注解 xlabel(Input Value); % x 轴注解 ylabel(Function Value); % y 轴注解 title(Two Trigonometric Functions); % 图形标题 legend(y = sin(x
12、),y = cos(x); % 图形注解 grid on; % 显示格线 二维绘图函数 bar 长条图 errorbar 图形加上误差范围 fplot 较精确的函数图形 polar 极座标图 hist 累计图 rose 极座标累计图 stairs 阶梯图 stem 针状图 fill 实心图 feather 羽毛图 compass 罗盘图 quiver 向量场图 1 MATLAB 中有趣的演示实例 MATLAB 中也同样有许多有意思的实例,为提高读者对MATLAB 和 Simulink 的兴趣,特举部分以供参考。具体如下,运行的时候只要将“:” 前面的代码复制到 MATLAB 中就可以了,随之会
13、出现各种各样的演示实例,对初学者帮助不小哦。 平面与立体绘图 graf2d :XY 平面绘图(火柴棒) graf2d2 :XYZ 立体绘图(切片) hndlgraf :平面显示线型处理窗口及命令演示 hndlaxis :平面显示处理窗口及命令演示 graf3d :立体显示处理窗口及命令演示 复杂函数的三维绘图 cplxdemo :复杂的 XYZ 立体图形 等高线绘制 quivdemo :等高线箭头显示 动画 lorenz : Lorenz 吸引子动画显示 电影 vibes : L-形薄膜振动 Fourier 变换 sshow sunspots :太阳黑点数据的傅里叶分析 fftdemo :分析
14、噪声序列中两组数据的相关度 数据拟合 sshow fitdemo :显示非线性数据拟合过程 census :预测世界人口 spline2d :样条拟合 稀疏矩阵 sshow sparsity :降阶 游戏 xpbombs :仿 Windows 系统自带的扫雷游戏 life :生命发展游戏 三维效果图 klein1 :肤色三维效果图 tori4 :四个首尾相接的圆环 spharm2 : 球形和声 cruller :类似油饼的东西 xpklein : Klein 瓶 bottle modes : L-形薄膜的12中模态 logo :MATLAB 的 Logo xpquad :不同比例的巴尔体超四方
15、体 truss :二维桁架的 12个模模态 tr*el :旅行商问题动画演示 wrldtrv :在地球仪上演示两地间的飞行线路 makevase :通过点击鼠标来制作花瓶 xpsound :声音样本分析 funfuns :综合了找零点,最小化和单输入函数积分功能 sshow e2pi : epi 或者 pie quake :地震波可视化 penny :便士可视化 imageext :改变图像的映射颜色 earthmap :地球仪 优化工具箱 bandem :香蕉最优化展示 expo-style banana optimization sshow filtdem :滤波效果演示 filter e
16、ffect demo sshow filtdem2 :滤波设计演示 filter design demo cztdemo : FFT 和 CZT (两种不同类型的 Z-变换算法) phone :演示电话通声音的时间与频率的关系 sigdemo1 :离散信号的时频图,可用鼠标设置 sigdemo2 :连续信号的时频图,可用鼠标设置 filtdemo :低通滤波器的交互式设计 moddemo :声音信号的调制 sosdemo :数字滤波器的切片图 神经网络工具箱 neural :神经网络模块组 firdemo :二维 FIR 滤波器 nlfdemo :非线性滤波器 dctdemo :DCT 演示
17、mlpdm1 :利用多层感知器神经网络拟合曲线动画 mlpdm2 :利用多层感知器神经网络进行 XOR 问题运算 模糊逻辑工具箱 invkine :运动逆问题 juggler :跳球戏法 fcmdemo : FCM slcp : 类似倒立摆动画 slcp1 :类似倒立摆动画 cart and a varying pole slcpp1 :类似倒立摆动画,有两个摆,一个可以变化 sltbu :卡车支援 slbb :类似于翘翘板 eval(string)作为一个 MATLAB 命令求字符串的值eval(try,catch)blanks(n)返回一个 n 个零或空格的字符串deblank 去掉字符串
18、中后拖的空格feval 求由字符串给定的函数值findstr 从一个字符串内找出字符串isletter 字母存在时返回真值isspace 空格字符存在时返回真值isstr 输入是一个字符串,返回真值lasterr 返回上一个所产生 MATLAB 错误的字符串strcmp 字符串相同,返回真值strrep 用一个字符串替换另一个字符串strtok 在一个字符串里找出第一个标记列在上面的第一个函数 eval 给 MATLAB 提供宏的能力。其中,该函数提供了将用户创建的函数名传给其它函数能力,以便求值。它的应用例子包括: a=eval( sqrt(2) )a =1.4142 eval( a=sqr
19、t(2) )a =1.4142上面的例子演示了函数 eval。显然,它们不是计算2的平方根的最简单方法。当被求值的字符串是由子字符串连接而成,或将字符串传给一个函数以求值时,eval 非常有用。说明这种用途例子本书的以后会提及。如果字符串传递到 eval 不能被辨认,MATLAB 提供下列语法: eval( a=sqrtt(2) , a= )a = 这里第二个参量被执行。由于第一个参量有误,即 sqrtt 不是一个有效的 MATLAB 函数。这种形式经常被描述为 eval(try,catch)。函数 feval 与 eval 类似,但在用法上有更多的限制。feval( fun ,x)求由字符串
20、 fun 给定的函数值,其输入参量是变量 x。即 feval( fun ,x)等价于求 fun(x)值。例如, a=feval( sqrt ,2)a =1.4142函数 eval,feval 的基本用途限在用户创建的函数内。一般地,feval 可求出有大量输入参量的函数值,例如,feval( fun , x, y, z) 等价于求 fun(x, y, z)值。列在上面表中的许多字符串函数提供了基本的字符串语法分析能力。例如,findstr 返回一个在另一个字符串内字符串的起始下标值。 b= Peter Piper picked a peck of pickled peppers ; finds
21、tr(b, ) % find spaceans =6 12 19 21 26 29 37 findstr(b, p ) % find the letter pans =9 13 22 30 38 40 41 find(b= = p ) % for single character searches the find command works tooans =9 13 22 30 38 40 41 findstr(b, cow ) % find the word cowans = findstr(b, pick ) % find the string pickans =13 30注意这个函数对
22、大小写是敏感的,当不匹配时,返回空矩阵。findstr 对字符串矩阵不起作用。 strrep(b, p , P ) % capitalize all p sans =Peter PiPer Picked a Peck of Pickled PePPers strrep(b, Peter , Pamela ) % change Peter to Pamelaans =Pamela Piper picked a peck of pickled peppers正如上面所看到的,strrep 执行简单的字符串替代。 strrep 对字符串矩阵不起作用。函数 strtok 找出由特定字符指定的字符串内的
23、标记,空格是缺省限定字符。例如, disp(b)Peter Piper picked a peck of pickled peppers strtok(b) % find first token in above string separated by whitespaceans =Peter c, r=strtok(b) % return the remainder of the string array in rc =Peterr =Piper picked a peck of pickled peppers d,s=strtok(r) %find the next token by us
24、ing the previous remainderd =Pipers =picked a peck of pickled peppers用空格作为限定符,strtok 找出在数组中的单词。strtok 对字符串矩阵不起作用。 d, s=strtok(b, pP ) %let delimiter be lower or upper case Pd =eters =Piper picked a peck of pickled peppers如果提供一个可选的字符串,它的字符是限定符。注意在标记里,不返回限定符,但返回所有限定符之前的字符。也就是,在上面的字符串 d = eter 末端有一个空格。
25、matlab 文件操作文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB 提供了一系列低层输入输出函数,专门用于文件操作。1、文件的打开与关闭1)打开文件在读写文件之前,必须先用 fopen 函数打开或创建文件,并指定对该文件进行的操作方式。fopen 函数的调用格式为:fid=fopen(文件名, 打开方式 )说明:其中 fid 用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下:? r:只读方式打开文件(默认的方式) ,该文件必须已存在。? r+:读写方式打开文件,打开后先读后写
26、。该文件必须已存在。? w:打开后写入数据。该文件已存在则更新;不存在则创建。? w+:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。? a:在打开的文件末端添加数据。文件不存在则创建。? a+:打开文件后,先读入数据再添加数据。文件不存在则创建。另外,在这些字符串后添加一个“t” ,如rt或wt+ ,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是 fopen 函数默认的打开方式。2)关闭文件文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用 fclose 函数,调用格式为:stafclose(fid)说明:该函数关闭 fid 所表示的文
27、件。sta 表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用 fclose(all)。2、二进制文件的读写操作1)写二进制文件fwrite 函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为:COUNTfwrite(fid,A,precision)说明:其中 COUNT 返回所写的数据元素个数(可缺省) ,fid 为文件句柄,A 用来存放写入文件的数据,precision 代表数据精度,常用的数据精度 有:char、uchar、int、long、float、double 等。缺省数据精度为 uchar,即无符号字符格式。例6.8 将一个二进
28、制矩阵存入磁盘文件中。 a=1 2 3 4 5 6 7 8 9; fid=fopen(d:test.bin,wb) %以二进制数据写入方式打开文件fid =3 %其值大于0,表示打开成功 fwrite(fid,a,double)ans =9 %表示写入了9个数据 fclose(fid)ans = 0 %表示关闭成功2)读二进制文件fread 函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:A,COUNT=fread(fid,size,precision)说明:其中 A 是用于存放读取数据的矩阵、COUNT 是返回所读取的数据元素个数、fid 为文件句柄、size 为可选项,若不选
29、用则读取整个文件内容;若选 用则它的值可以是下列值:N(读取 N 个元素到一个列向量) 、inf(读取整个文件) 、M,N(读数据到 MN 的矩阵中,数据按列存放) 。 precision 用于控制所写数据的精度,其形式与 fwrite 函数相同。3、文本文件的读写操作1)读文本文件fscanf 函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:A,COUNT=fscanf(fid,format ,size)说明:其中 A 用来存放读取的数据,COUNT 返回所读取的数据元素个数,fid 为文件句柄,format 用来控制读取的数据格式,由%加上格式符组成,常 见的格式符有:d(
30、整型) 、f(浮点型) 、s(字符串型) 、c(字符型)等,在% 与格式符之间还可以插入附加格式说明符,如数据宽度说明等。 size 为可 选项,决定矩阵 A 中数据的排列形式,它可以取下列值:N(读取 N 个元素到一个列向量) 、inf(读取整个文件) 、M,N(读数据到 MN 的矩阵中,数 据按列存放) 。2)写文本文件fprintf 函数可以将数据按指定格式写入到文本文件中。其调用格式为:fprintf(fid ,format,A)说明:fid 为文件句柄,指定要写入数据的文件,format 是用来控制所写数据格式的格式符,与 fscanf函数相同,A 是用来存放数据的矩阵。例6.9 创
31、建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。 a=string; fid=fopen(d:char1.txt,w); fprintf(fid,%s,a); fclose(fid); fid1=fopen(d:char1.txt,rt); fid1=fopen(d:char1.txt,rt); b=fscanf(fid1,%s)b =stringmatlab 读 txt 文件fid=fopen(fx.txt,r);%得到文件号f,count=fscanf(fid,%f %f,12,90);%把文件号1的数据读到 f 中。其中 f 是12 90的矩阵%这里 %f %f表示读取数据的形势,他是按原始数据型读出fclose(fid);%关闭文件另外有的 txt 文件还可以用 load 来打开其语句为f=load(fx.txt)我个人觉得用第一种方式较好。因为有些时候,特别是 fx.txt 的一行种有多个数据时用 load就比较麻烦了。