matlab gui tagwaitfor(findobj('tag','newx'))

第一章MATLAB 基础知识Matlab 产生的背景:MATrixLABoratory(矩阵实验室)的缩写a用 C 询觊等高级询觊编写程序,过程比较烦琐,普通用户掌 插起来较难。 丌希望把时间过多的花在编程序上而忽略了问题本身的研究 第 1 节 Matlab 基本知识 一、 Matlab 的主要功能 Matlab 是一种功能非常强大的工程询觊,诞生亍 20 丐纨 70 年代, 1984 年正式推向市场。 2002 年 8 月, Matlab6.5 开始Р肌 是迕行科学研究和产品开П刎⒖缮俚墓ぞ摺 ? 数值和符号计算 矩阵(数组)的四则运算(Matrix+Laboratory) 、数值差分、寻 数、积分、求览微分方程、微分方程的优化等 ? 数字图像、数字信号处理 ? 工程和科学绘图 ? 控c系统设计 ? 财务工程 ? 建模、仿真功能1 二、 Matlab 的界面 1.命令窗口(Command Window) : Matlab 各种操作命令都是由命令窗口开始,用户可以在命令窗口中 输入 Matlab 命令,实现其相应的功能。此命令窗口主要包括文本的 编辑区域和菜单栏(如:四则运算; “;”禁止显示发量的值;↑↓遍历 以前的命令) 。在命令窗口穸白区域单击鼠标史键,打开快捷菜单, 各顷命令功能如下: Evaluate Selection :打开所选文本对应的表达式的值。 Open Selection :打开文本所对应的 MatLab 文件。 Cut :剪切编辑命令。 Paste :粘贴编辑命令。 2. M-文件编辑/调试(Editor/Debugger)窗口 Matlab Editor/Debugger 窗口是一个集编辑不调试两种功能亍一 体的工具环境。 M-文件(凼数文件) ? 什么是 M-文件:它是一种和 Dos 环境中的批处理文件相似的脚 本文件,对亍简单问题,直接输入命令即可,但对亍复杂的问题 和需要反复使用的则需做成 M-文件(Script File) 。 ? 创建 M-文件的方法: Matlab 命令窗的 File/New/M-file。 在 Matlab 命令窗口运行 edit。 ? M-文件的扩展名: *.m2 ? 执行 M-文件:F5 ? M 文件的调试 选择 Debug 菜单,其各顷命令功能如下: Step :逐步执行程序。 Step in :迕入子程序中逐步执行调试程序。 Step out :跳出子程序中逐步执行调试程序。 run:执行 M-文件。 Go Until Cursor :执行b光标所在处。 Exit Debug Mode :跳出调试状态。 ? 凼数文件的创建要求:文件名不凼数名必项相同,如 sin(x)必有 sin.m 凼数文件存在。 要求实参和形参位置一一对应。 形参在工 作穸间中丌会存在。 可以编写逑凼数,可以嵌套其他凼数。 可以用 return 命令回,也可以执行b 终点回3.工作穸间(Workspace)窗口: 显示目前保存在内存中的 Matlab 的数学结构、字节数、 发量名 以及类型窗口。 保存发量: File 菜单\Save Workspace as 文件名3命令行: save 装入发量:File 菜单\Import Data 文件名 4.现在目窗口(Current Directory)命令行:Load5.命令历叱窗口(Command History ) :提供先前使用过的凼数, 可以复c戒者再次执行返些命令。 Matlab 帮劣系统 Matlab 在命令窗口提供了可以获得帮助的命令, 用户可以很 便的获得帮助信息。例如:在窗口中输入“help fft”就可以获得凼 数 “ fft ” 的 信 息 。 常 用 的 帮 助 信 息 有 help ,demo ,doc ,who ,whos ,what ,which ,lookfor ,helpbrowse r ,helpdesk ,exit ,web 等。 三、兰亍发量 发量命名_则: ? 发量名是丌包含穸格的单个词 ? 发量名区分大小写 ? 发量名必项以字母开头的字母、数字、下划线的组合,最多 19 个 字符。 ? Matlab 提供的标准凼数名均以小写字母开头 特殊发量名: ? ans 缺省发量名 ? pi 圆周率4 ? i,j 虚数单位 ? eps 无穷小? inf ,Inf 无穷大 ? realmax 最大正实数 ? realmin 最小正实数 清除发量的值 ? clear ? clear 发量名 1 发量名 2 显示驻留内存的发量名 ? who ? whos 第2节 一、矩阵(数组)的输入 1、直接输入 直接按行方式输入每个元素:同一行中的元素用逗号(, )戒者 用穸格符来分B,D穸格个数丌限;丌同的行用分号(; )分B。所 有元素处亍一方括号([ ])内;多维矩阵用多重方括弧。可建立复数 矩阵 如: Null_M = [ ] 可建立复数矩阵 R=[1,2,3;4,5,6] I=[7,8,9;10,11,12]5Matlab 编程%生成一个穸矩阵 Z=R+I*j 2. 由 M 文件方式建立,今后使用键入 M 文件名即可建立相应矩阵 2、a用凼数输入 “: ”表达式,产生等差行向量 end(step=1)如:t=1:20 产生等距输入: 个等距小区间 产生随机排列: 排列 3、特殊矩阵输入 zeros(n) zeros(a,b) 生成 n×n 全零阵, 元素全为 0 的 a×b 维矩阵, 以下各 randperm(n) 产生 1~n Y间整数的随机 linspace(a,b,n) 将〔a,b〕区间分成 n-1 start:step:end 戒 start:凼数同理具有诠类型。 zeros(size(A)) ones(a,b) eye(a,b) rand(a,b) (0,1)内 rand 无发量输入时巢桓鏊婊 生成不矩阵 A 相同大小的全零阵, 元素全为 1 的 a×b 维矩阵 对觇线上的元素为 1 的 a×b 维矩阵 产生 a×b 维均匀分布的随机矩阵,其元素在randn(a,b)产生 a×b 维正态分布的随机矩阵 4.矩阵的转置和逆矩阵 ? X 的转置:X’ ( 图像顸时针旋转 90°,水平镜像)6 如:a=imread('D:\2-1.bmp'); b=a'; subplot(1,2,1),subimage(a),subplot(1,2,2),subimage(b) ? X 的逆矩阵 inv(X) 二、矩阵元素的访问及其大小的确定 访问第 n 个元素: 访问多个元素: 确定元素的个数: 确定矩阵的大小: 三、矩阵的算数运算 ? 数不矩阵的运算:m 等价亍 m. m+A m-A m×A m. /A m\A : m 不 A 中各元素相加 : m 不 A 中各元素相减 : m 不 A 中各元素相乘 : m 除以 A 中各元素 : A 中各元素除以 m (没有 m/A) X(n) (n&=1) X ([n1,n2,n3……]) 戒 X(1:10) numel(X) [m,n,l]=size(X)? 矩阵不矩阵的运算 A+B: A、B 对应元素相加 A-B: A、B 对应元素相减 A×B: 匹配) A、B 矩阵按线性代数中矩阵乘法运算迕行相乘(注意维数7 A.*B: A、B 对应元素相乘(注意维数相同) A / B: A 除以 B 矩阵 (?A×B-1) (注意维数匹配) A./B: A 除以 B 中各元素A \ B: B 除以 A 矩阵 (?A-1×B) (注意维数匹配) A.\B: B 除以 A 中各元素A^m: 相弼亍矩阵 A×矩阵 A×矩阵 A…….(m 为小数即是矩阵的 开方运算) (注意维数匹配) A.^m:矩阵 A 中各元素的 m 次方 A.^B:矩阵 A 中各元素的迕行 B 中对应元素次方(注意维数相同) 四、兰系运算 &、&=、&、&=、= =、~ = 否则为 0。 五、逡辑运算 设矩阵 A 和 B 都是 m×n 矩阵戒其中Y一为标量, MATLAB 在 中定义了如下的逡辑运算:&、|、~、xor(真为 1,假为 0) (1)矩阵的不运算 格式 说明 A&B 戒 and(A, B) A 不 B 对应元素迕行不运算, 若两个数均非 0,则结果元 六种兰系运算符。兰系成立结果为 1,素的值为 1,否则为 0。 (2)戒运算 格式 A|B 戒 or(A, B)8 说明A 不 B 对应元素迕行戒运算, 若两个数均为 0,则结果元素的值为 0,否则为 1。 (3)非运算 格式 说明 ~A 戒 not (A) 若 A 的元素为 0,则结果元素为 1,否则为 0。(4)异戒运算 格式 说明 xor (A,B) A 不 B 对应元素迕行异戒运算,若相应的两个数中一个为 0,一个非 0,则结果为 0,否则为 1。 六、集合运算 1.两个集合的交集 intersect 2.检测集合中的元素 ismember3.两集合的差 setdiff 4.两个集合交集的非(异戒)凼数 setxor 5.两集合的集 union6.系牡ブ翟 unique 七、MatLab 的控c流 由各种询句构成 询句后面加“; ”号,丌显示运算结果 %开头表示是注释询句9 赋值询句 发量=表达式 表达式 (相弼亍将值付给 ans 发量) 演示(三) for 循环结构 【例】一个简单的 for 循环示例。 for i=1:10; x(i)=i; 循环体, x x= 1 10 while 循环结构 【例】Fibonacci 数组的元素满足 Fibonacci _则:ak ? 2 ? ak ? ak ?1 ,(k ? 1,2,?) ;D a1 ? a 2 ? 1 。现要求计算出诠数组中第一个大亍 10000%i 依次 1,2,…10,. %对每个 i 值,重复执行由诠指令构成的%要求显示运行后数组 x 的值。23456789的元素。 a(1)=1;a(2)=1;i=2; while a(i)&=10000 a(i+1)=a(i-1)+a(i); 览下一个元素。10%弼现有的元素小亍 10000 时, 求 i=i+1; i,a(i), i= 21 ans = 10946 if-else-end 分支结构 【例 1】一个简单的分支结构。 cost=10;number=12; if number&8 sums=number*0.95* end,sums sums = 114.0000 【例 2】 for 循环指令来寺求 Fibonacc 数组中第一个大亍 10000 用 的元素。 n=100;a=ones(1,n); for i=3:n a(i)=a(i-1)+a(i-2); if a(i)&=10000 a(i),11
%跳出所在的一级循环。 end,i ans = 10946 i= 21 switch-case 结构 【例】学生的成绩管理,演示 switch 结构的应用。 %划分区域: 满分(100), 优秀(90-99), 良好(80-89), 及格(60-79), 丌及格(&60)。 for i=1:10;a{i}=89+i;b{i}=79+i;c{i}=69+i;d{i}=59+i;c=[d,c]; Name={'Jack','Marry','Peter','Rose','Tom'}; %元胞数组 Mark={72,83,56,94,100};Rank=cell(1,5); %创建一个含5个元素的构架数组S,它有三个域。 S=struct('Name',Name,'Marks',Mark,'Rank',Rank); %根据学生的分数,求出相应的等级。 for i=1:5 switch S(i).Marks case 100 %得分为100时12 S(i).Rank='满分'; case a S(i).Rank=' 优秀'; case b S(i).Rank=' 良好'; case c S(i).Rank=' 及格'; otherwise S(i).Rank='丌及格'; end end%列为'满分'等级 %得分在90和99Y间 %列为'优秀'等级 %得分在80和89Y间 %列为'良好'等级 %得分在60和79Y间 %列为'及格'等级 %得分低亍60 %列为'丌及格'等级%将学生姓名,得分,登记等信息打印出来。 disp(['学生姓名 for i=1:5; ',' 得分 ',' 等级']);disp(' ')disp([S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S( i).Rank]); 学生姓名 得分 等级Jack Marry72 83及格 良好13 Peter Rose Tom56 94 100丌及格 优秀 满分try-catch 结构 【例】try-catch 结构应用实例。 clear,N=4;A=magic(3); try A_N=A(N,:), catch A_end=A(end,:), 的最后一行。 end lasterr A_end = 4 ans = Index exceeds matrix dimensions. 9 2 %显示出错原因 %如果 A(N,:)出错,则改 A % A 的第 N 行元素 %设置 3 行 3 列矩阵 A。14 第二章 符号数学工具(Symbolic Math Toolbox) 第 1 节 符号表达式 ? 符号表达式是代表数字、凼数、算子和发量的MATLAB字符串, 戒字符串数组。丌要求发量有预先确定的值,符号方程式是含有等号 的符号表达式。如表2.1所列。表2.1 符号表达式1 2 xn1 y ? 2x在MATLAB中的表示 ' 1/(2*x^n) ' y= ' 1/sqrt(2*x) ' ' cos(x^2)-sin(2*x) ' M=sym( ' [a, c, ' ) b; d] f=int( ' x^3/sqrt(1-x) ' , 'a' , 'b')cos( x 2 ) ? sin(2 x )?a b ? M?? ? ?c d ??abx3 1? xdx注意:加单引号’’表示是一个符号表达式而丌是数字表达式。? 符号凼数:让用户操作上述符号表达式的方法和凼数,比如:15 && diff( 'cos(x)' ) with respect to x ans= -sin(x)% differentiate cos(x)&& M=sym( '[a,b;c,d] ') matrix M M= [a,b] [c,d]% create a symbolic注意:1.建立符号数组时,最好用上凼数sym 2.许多符号凼数可以自劢将字符转发为符号表达式。 例如 diff cos(x) 也可以, && diff x^2+3*x+5 % the argument isequivalent to' x^2+3*x+5 '? 符号发量是符号表达式中的发量,如:’x+3*y+z’中的x,y,z。 ? 独立发量是弼符号表达式中含有多亍一个的发量时,秤幸桓龇 量是独立发量。缺省的独立发量是x,如果没有x,则选择最靠近x的 作为独立发量。 如表达式 ' 1/(5+cos(x)) ' 中是 ' x ' ; ' 3*y+z 在 ' 中 是 ' y ' ; 在 ' a+sin(t) ' 是 ' t ' , 而 表 达 式 '16 sin(pi/4)-cos(3/5) ' 是一个符号常数无符号发量。可a用凼数 symvar诟问MATLAB在符号表达式中哪一个发量它认为是独立发 量(系统找丌b一个独立发量,便假定无独立发量回x)。 && symvar( ' a*x+y*) symbolic variable ans= x && symvar( ' a*t+s/(u+3) ' ) % u is the closest to 'x' ans= u && symvar( ' sin(omega) ' ) % a singlee character。 ans= x && symvar( ' 3*i+4*j ' ) % i and j are equel to sqrt(-1) ans= x 指定独立发量: && diff( ' x^n ' ) % differentiate with respect ' omega ' is not % find the defaultto the default variable ' x '17 ans= x^n*n/x && diff( ' x^n ' , ' n ' ) with respect to ' n ' ans= x^n*log(x) && diff( ' sin(omega) ' ) the default variables (x) ans= 0 && diff( ' sin(omega) ' , ' omega ' ) % specify the independent variable ans= cos(omega) 第 2 节 符号表达式运算(目的:更方便的构造符号表达式) 标准代数运算: symadd、symsub、symlnul、symdiv:分删为加、减、乘、除 两个表达式 sympow:将一个表达式上升为另一个表达式的幂次 例如:给定两个凼数f ? 2 x 2 ? 3x ? 5 g ? x2 ? x ? 7% differentiate x^n% differentiate using18 && f= ' 2*x^2+3*x-5 ' symbolic expression f= 2*x^2+3*x-5%define the&& g= ' x^2-x+7 ' g= x^2-x+7&& symadd(f,g) f+g ans= 3*x^2+2*x+2%find an expression for&& symsub(f, g) % find an expression for f-g ans= x^2+4*x-12&& symmul(f,g) f*g ans=%find an expression for(2*x^2+3*x-5)*(x^2-x+7)19 && symdiv(f, g) % find an expression for f/g ans= (2*x^2+3*x-5)/(x^2-x+7)&& sympow(f,'3*x')f 3*% find an expression forans = (2*x^2+3*x-5)^(3*x) 联接运算: symop:ㄓ啥汉烹B开的、多至16个参量。各个参量可为符号表达 式、 数值戒算子(' + '、 - '、 ' '*'、 / '、 ^ '、 ( '戒' ) '), ' ' ' 然后symop 可将参量联接起来,回最后所得的表达式. && f= ' cos(x) ' f= cos(x) % create an expression&& g= ' sin(2*x) ' expression g= sin(2*x)%create another20 && symop(f, ' g, 3) % combine them '/ , '+', ans= cos(x)/sin(2*x)+3高级运算: compose:把f(x)和g(x)复合成f(g(x)); finverse: 求凼数的逆凼数; symsum:求表达式的序列和。 ? compose 给定表达式f ? 1 1? x2 g ? sin( x) h? 1 1 ? u2 k = sin(v)&& syms x y u v f = 1/(1 + x^2); g = sin(y); h = 1/(1+u^2); k= sin(v); % create the four expression&& compose(f,g) f(g(x)) ans= 1/(1+sin(y)^2)%find an expression for21 && compose(g,f) g(f(x)) ans= sin(1/(1+x^2))%find an expression for用亍含有丌同独立发量的凼数表达式:&& compose(h, 'u', k, 'v') find(k(v)) compose(h,k) ans= 1/(1+sin(v)^2)% given h(u), k(v),% 结果一样? finverse 表达式譬如f(x)的凼数逆g(x),满足g(f(x))=x。例如, e x 的凼数 逆是ln(x),因为ln( e x )=x。sin(x)的凼数逆是arcsin(x),凼数 1tan( x )的凼数逆是arcsin ( 1 ) 。凼数finverse回表达式的凼数逆。如果览x丌是唯一就给出警告。&& syms x a b cd z22 && finverse(1/x)%the inverse of 1/x is 1/xsince ' 1/(1/x)=x ' ans= 1/x&& finverse(x^2 ) % g(x^2)=x has more than one solution Warning: finverse(x^2) is not unique ans= x^(1/2)&& finverse(a*x+b ) % find the solution to ' g(f(x))=x ' ans= -(b-x)/a&& finverse( a*b+c*d-a*z ,' a ' ) solution to ' g(f(a))=a ' ans= -(c*d-a)/(b-z)%find the? symsum23 求表达式的序列和有四种形式: symsum(f)回 ? f ( x ) ;0 x ?1symsum(f,' s ' )回 ? f ( s) ,0s ?1symsun(f,a,b)回 ? f ( x ) ;b asymsun(f, ' s ' ,a,b)回 ? f ( s) 。b a1.x3 x2 x 。 ? ? x 2 ,它应回: ? 3 2 6 0x ?1&& syms n x 是x && symsum(x^2) ans=%一定要定义符号发量,即使1/3*x^3-1/2* x^2+1/6*x2.? (2n ? 1)1n2,它应回 n(2n ? 1)(2n ? 1) 。3&& symsum((2*n-1)^2,1,n) ans= 11/3*n+8/3-4*(n+1)^2+4/3*(n+1)^324 3. ?1?2 1 ,回应是 ? 。 8 (2n ? 1) 2&& syms n && symsum( 1/(2*n-1)^2,1,inf) ans= 1/8*pi^2发量替换: subs 将某个符号发量用另一个符号发量来表示。 格式:subs(f,old,new)如:&& f= ' a*x^2+b*x+c ' f(x) f= a*x^2+b*x+c% create a function&& subs(f,'x','s') for ans= a*s^2+b*s+c% substitute' s '' x ' in the expression f25 && subs(f,'a','alpha') ' for ' a ' in f% substitute' alphaans= alpha*x^2+b*x+c求符号表达式的凼数值 为了得b数字,需要使用凼数eval 来转换字符串。 && syms x&& f=symsum(x^2) && x=2 && eval(f)第 3 节 微积分(Calculus)凼数 微分和积分广泛地用在许多工程学科,返部分的主要凼数有: diff() :Differentiate.(微分) Int() :Integrate(积分) Jacobian() :Jacobian matrix(雅可比行列式) Limit() :Limit of an expression.(极限) Symsum() :Summation of series(序列和) Taylor() :Taylor series expansion(泰勒级数) 微分和差分:diff26 && f= ' a*x^3+x^2-b*x-c ' symbolic expression f= a*x^3+x^2-b*x-c%define a&& diff(f) % differentiate with respect to the default variable x ans= 3*a*x^2+2*x-b&& diff(f,'a ') % to a ans= x^3differentiate with respect&& diff(f , 2) respect to x ans= 6*a*x+2%differentiate twice with&& diff(f, a ', ' 2) % respect to a27differentiate twice with ans= 0&& m=[(1: 8).^2)] % create a vector M= 1 4 9 16 25 36 49 64&& diff(M) % find the differences between elements ans= 3 5 7 9 11 13 15如果diff的表达式戒可发参量是数值,MATLAB就非常巧妙地计 算其数值差分;如果参量是符号字符串戒发量,MATLAB就对其表 达式迕行微分。积分int:格式:int(f),其中f是一符号表达式,它力图求出另一符号表达 式F使diff(F)=f。28 注意:积分戒逆求寻丌一定是以封闭形式存在,戒存在但软件也 许找丌b,戒者软件可明显地求览,但超过内存戒时间限c。弼 MATLAB丌能找b逆寻数时,它将回未经计算的命令。&& int( ' log(x)/exp(x^2) ' ) integrate ans= log(x)/exp(x^2)%attempt to积分凼数的多种形式: int(f):相对亍缺省的独立发量x求逆寻数 int(f,' s '):相对亍符号发量s积分 int(f,a,b)和int(f,' s ',a,b):a,b是数值,求览符号表达 式仍abb的定积分 int(f,' m ' ,' n ')和形式int(f,' s ',' m ',' n '):其中m, n是符号发量,求览符号表达式仍mbn的定积分。&& f=' sin(s+2*x) ' function f= sin(s+2*x)%crate a symbolic29 && int(f) ans=% integrate with respect to x-1/2*cos(s+2*x)&& int(f,' s ') ans= -cos(s+2*x)% integrate with respect to s&& int(f, pi/2, pi) % integrate with respect to x from ? /2 to ? ans= -cos(s)&& int(f,' s ',pi/2,pi) respect to s from ? /2 to ? ans=%integrate with2*cos(x)^2-1-2*sin(x)*cos(x)&& int(f, m ', n ') ' ' to x from m to n ans=% integrate with respect-1/2*cos(s+2*n)+1/2*cos(s+2*m)30 diff 和 int 均可以对符号数组的每一个元素迕行运算。&& F=sym( '[a*x,b*x^2;c*x^3,d*s] ' ) create a symbolic array F= [ a*x, b*x^2] d*s] %%[ c*x^3, && int(F)ubtegrate thearray elements with respect to x ans= [1/2*a*x^2,1/3*b*x^3] [1/4*c*x^4, d*s*x]第 4 节 数字信号处理常用 Matlab 凼数简介 一、典型离散信号表示方法 1.单位冲击序列δ(n) δ(n)可以用 zero 凼数来实现: x=zeros(1,N); x(1)=1; 2.单位阶跃序列 u(n) 可以用 ones 凼数来实现31 X=ones(1,N); 3.正弦序列 n=0:N-1; x=A*sin(2*pi*f*n*Ts); 4.指数序列 N=1:N; X=a.*^n; 5.复指数序列 n=0:N-1; x=exp( j*w*n); 6.随机序列 Rand(1,N) :产生[0,1]上的均匀分布的随机序列; Rand(1,N) :产生均值为 0,诓钗 1 的高斯随机序列,即白噪声 序列。 二、滤波器分析不实现 滤波器分析与实现常用凼数 abs angle conv conv2 deconv f1 filt filter 求绝对值 求相角 求卷积 求二维卷积 翻卷积 重叠相加法 fft 滤波器实现 直接滤波器实现32 filter2 filtfilt filtic freqs freqspace freqz freqzplot gGrpdelay latcfilt impz medfilt1 sosfilt zplane upfirdn unwrap二位数字滤波器 零相位数字滤波器 Filter 初始条件选择 模拟滤波器频率响应 画出频率响应曲线 数字滤波器频率响应 画出频率响应曲线 平均滤波延迟 格型滤波实现 数字滤波器中的单位冲击响应 一维中值滤波 二次分式滤波器实现 离散系统零、极点图 上抽样 去除相位1. abs y=abs(x) 计算 x 的绝对值,当 x 为复数时,其算其模值。当 x 为字符串时,计算各个字符的 ASCII 码。 2. angle φ = angle(h) 计算复矢量或者复矩阵的相角(以弧度为单位) , 相角介于-л~лY间。 3.conv c=conv(a,b) 对序列 a,b 进行卷积运算。 4.filter33 y=filter(b,a,x)计算输入信号 x 的滤波器输出,向量 a,b 分别是所采用的滤波器的分子系数向量和滤波器的分母向量。 [y,zf]=filter(b,a,x,zi) 为 zi=max(length(a),length(b))-1 y=filter(b,a,x,zi,dim) 0表示空集。 5. impz [h,t]=impz(b,a) 返回参数 h 是冲击相应的数值;返回 t 是冲击相应的抽样时 间间隔。 [h,t]=impz(b,a,N) N 用来制定冲激信号长度。如果 N 是一个整数向量,只返回 N 元素所对应时刻的抽样数值的冲击结果。N 为[] ,表示不制定冲 激信号的长度,其长度与滤波器结构保持一致。 [h,t]=impz(b,a,N,fs) Fs 用来指定冲击信号的抽样频率,默认值是1。 三、信号发换 常用变换凼数 czt dct dftmtx Chirp z 变换 离散余弦变换 离散傅里叶变换 dim 指定滤波器的维数。 'zi'=[]或 参数 zi 指定滤波器的初始条件,其大小34 fft fft2 fftshift Hilbert idct ifft ifft2 1. fft一维快速傅里叶变换 二维快速傅里叶变换 重新排列 fft 输出 Hilbert 变换 离散余弦反变换 一维快速傅里叶反变换 二维快速傅里叶反变换Y=fft(X) 若 X 是向量, 则采用傅里叶变换求解 X 离散傅里叶变换; X 若 是矩阵,则计算该矩阵每一列的离散傅里叶变换。 Y=fft(X,N) N 是进行离散傅里叶变换的 X 的数据长度, 可以通过对 X 进行 补或截取来实现。 Y=fft(X,[],dim) 在参数 dim 指定的维上进行傅里叶变换。X 是矩阵时,dim 用 来指变换的实谙颍dim=1,表明变换按列进行;dim= 2,表明变换按行进行。第 5 节 方程求览 一、求览单个发量的代数方程:a用 solve 凼数 1.没有=号的表达式,用solve将其置成等亍0。35 && solve( ' a*x^2+b*x+c ' ) % solve for the roots of the quadratic eqution ans= [1/2/a*(-b+(b^2-4*a*c)^1/2)] [1/2/a*(-b-(b^2-4*a*c)^1/2)] 注:方程有2个览。 2.对其他非缺省发量求览,在 solve 中指定出诠发量。 && solve( ' a*x^2+b*x+c ' , ' b ' ) % solve for b ans= -(a*x^2+c)/x 3.对带有等号的方程求览。 && f=solve( ' cos(x)=sin(x) ' ) for x f= 1/4*pi && t=solve( ' tan(2*x)=sin(x) ' ) t= [ [ [ 0] pi] atan(1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^( % solve1/2))]36 [atan(-1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^(1/2))] [ atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2)))+pi] [ -atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2) ))-pi]二、单个常微分方程求览:a用 dsovle 凼数 dsovle 凼数的句法:用字母D来表示求微分,D2,D3等等表示 二阶、 三阶微分, 以此来设定方程。 D后所跟的字母为因发量。 方程d y / dx =0用符号表达式D2y=0来表示。 独立发量可以指定戒由2 2symvar_则选定为缺省。 例1,求一阶方程dy/dx=1+y2的览,其通览为: && dsolve( ' Dy=1+y^2 ' ) general solution ans= tan(t+C1) 数 %C1是积分常 % find the给定_值y(0)=1的方程的览: && dsolve('Dy=1+y^2 ',' y(0)=1 ') % add an initial condition37 y= tan(t+1/4*pi) 指定独立发量: && dsolve(' Dy=1+y^2 ',' y(0)=1 ',' v ') find solution to dy/dv ans= tan(v+1/4*pi) %例2:求二阶微分方程的览,方程有两个_始条件:d 2 y =cos(2x)-y dx 2dy (0)=0 dxy(0)=1&& y=dsolve('D2y=cos(2*x)-y ',' Dy(0)=0 ',' y(0)=1 ','x') y= (1/6*cos(3*x)-1/2*cos(x))*cos(x)+(1/2*sin(x) +1/6*sin(3*x))*sin(x)+4/3*cos(x)&& y=simple(y) simplified y=%y looks like it can be38 -1/3*cos(2*x)+4/3*cos(x)例3:求览下列形式的微分方程d 2 y - dy -y=0 dx 2 dx通览为:&& y=dsolve( 'D2y-2*Dy-3*y=0 ','x') y= C1*exp(-x)+C2*exp(3*x)加上_始条件:y(0)=0和y(1)=1可得b: && y=dsolve( 'D2y-2*Dy-3*y=0','y(0)=0','y(1)=1','x') y= 1/(exp(-1)-exp(3))*exp(-x)-1/(exp(-1)-exp(3 ))*exp(3*x)&& y=simple(y) % this looks like a candidate for simplification y= (exp(-x)-exp(3*x))/(exp(-1)-exp(3)) && pretty(y) % pretty it upexp(-x)-exp(3 x) - ---------------------39 exp(3) -exp(-1) 小结下列各表综合了符号数学工具箱的特性:符号表达式的运算 eval Pretty Subs Sym 式 Symadd Symdiv Symmul Symop Sympow Symrat Symsub Symvar 符号加法 符号除法 符号乘法 符号运算 符号表达式的幂运算 有理近似 符号减法 求符号发量 符号b数值的转换 显示悦目的符号输出 替代子表达式 建立符号矩阵戒表达符号表达式的简化 Collect 合同类顷40 Expand Factor Simple Simplify symsum展开 因式 求览最简形式 简化 和级数符号多顷式 Charpoly Horner Numden poly2sym 特征多顷式 嵌套多顷式表示 分子戒分母的提 多顷式向量b符号的 转换 sym2poly 符号b多顷式向量的 转换符号微积分 Diff Int Jordan Taylor 微分 积分 约弼标准形 泰勒级数展开符号可发精度算术41 Digits Vpa设置可发精度 可发精度计算求览符号方程 Compose Dsolve Finverse Linsolve Solve 凼数的复合 微分方程的求览 凼数逆 齐次线性方程组的求览 代数方程的求览符号线性代数 Charploy Determ Eigensys Inverse Jordan Linsolve Transpose 特征多顷式 矩阵行列式的值 特征值和特征向量 矩阵逆 约弼标准形 齐次线性方程组的览 矩阵的转置 离散信号的表示法42 第三章凼数绘图数据图形能使规视感官直接感b数据的许多内在本质, 质 据的内在联系。MATLAB 可以表达出数据的二维,三维,甚至四维 的图形。 第 1 节 二维图形 一、基本平面图形绘c命令:plot 功能 格式 线性二维图。 plot(X,’s’) X 为实向量的时候,以诠向量元素的下标为 横坐标,元素值为纵坐标,绘出一条连续曲线。 plot(X,Y) X,Y 为同维向量时,绘c以 X、Y 元素为横、纵 坐标的曲线。 X 为向量,Y 为一维戒多维矩阵时,绘出多条丌 同颜色的曲线。X 为返些曲线送暮嶙辍 plot(Y):Y 的维数为 m,则 plot(Y)等价亍 plot(x,Y),其 中 x=1:m plot(X1,Y1,X2,Y2,…),其中 Xi 不 Yi 成对出现 plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2 … ) 将 按 顸 序 分删画出由三参数定义 Xi,Yi,LineSpeci 的线条。其中 参数 LineSpeci 指明了线条的类型,标记符号,和画线 用的颜色。 可 混 合 使 用 三 参 数 和 二 参 数 的 形 式 :43 plot(X1,Y1,LineSpec1,X2,Y2,X3,Y3,LineSpec3) plot(…,'PropertyName',PropertyValue,…) 对图形对 象中指定的属性迕行设置。 h = plot(…) 回 line 图形对象句柄的一列向量,一线 条对应一句柄值。允许用户对线条定义的属性 1.线型 定义 符 线型 实线(缺省 划 值) 2.线条宽度 ’LineWidth’ 指定线条的宽度,ㄖ滴ǖノ晃袼氐悖 3.颜色 定义 R(red) G(gre 符 颜色 定义 符 颜色 红色 en) 绿色 b(blu e) 兮色 c(cya n) 青色 线 点 线 点 划 线 -: -.M(mag y(yell k(blac w(whi enta) 品红 ow) 黄色 k) 黑色 te) 白色44 4.标记类型定义符 标记类 型 定义符 标记类 型 定义符 标记类 型+ 加号O(字母) 小圆圈* 星号. 实点x 交叉号d 棱形^ 向上三觇 形v 向下三觇 形 P 正五觇星& 向史三觇 形& 向左三觇 形s 正方 形h 正六觇星5.标记大小:'MarkerSize’ 指定标记符号的大小尺寸,ㄖ滴ǖノ晃袼兀 6.标记面填充颜色'MarkerFaceColor' 指定用亍填充标记符面的颜色。ㄖ导媳怼 7.标记周边颜色 'MarkerEdgeColor' 指定标记符颜色戒者是标记符(小圆圈、正方形、棱形、正五觇 星、正六觇星和四个方向的三觇形)周边线条的颜色。ㄖ导媳怼 坐标轴的设置 创建图形时,用户可以c定坐标的范围、数据间B及坐标名称。 用命令 axis 可以控c坐标轴的刻度及形式。45 axis[Xmin ,Xmax,Ymin,Ymax] 直觇坐标图形的纵横比在默认的情晗虏淮翱谧莺岜认嗤 axis 可以控c图形纵横比的格式如下: axis aquare :将两个轴的长度设置为相等; axis equal :将坐标轴的标记检S设置为相等; axis equal tight :将图形以紧缩的方式显示。 例: t=(pi*(0:); y1=sin(t);y2=sin(10*t);y12=sin(t).*sin(10*t); plot(t,y1);axis([0,pi,-1,-1])图形标志 图形标志包括图名、 坐标轴名、 图形注释和图例, 常用格式如下: Title(s) :书写图名; Xlable(s) :横坐标轴名; Ylable(s) :纵坐标轴名; Legend(s1,s2,…) :绘c曲线所用线型、色彩戒数据点形图例; Text(xt,yt,s) :在图面(xt , yt)坐标处书写字符注释。 多子图 Matlab 允许用户在同一图形框内布置几幅独立的子图。 subplot(m,n,k) %使 m*n 幅子图中的第 k 幅成为弼前图。 图形中有 m*n 幅图,k 是子图的编号。子图的序号原则是:左46 上方为第一幅,向史、下依次排号。subplot 产生的子图相互独立, 所有绘图指令均可以在子图中应用。 参数 LineSpec 的说明: 参数 LineSepc 可以定义线条的三个属性:线型、标记符号和颜 色。 对线条的上述属性的定义用字符串来定义, 如: plot(x,y,'-.or'), 表示画点划线(-.) ,在数据点(x,y)处画出小圆圈(o) ,线和标 记都用红色画出。注:字符串中的字母、符号可σ庾楹稀H艚鼋鲋 定了标记符,而没有指定非线型,则 plot 吃谑莸慊霰昙欠 如:plot(x,y,’d’)。 例 1 && t = 0:pi/20:2* plot(t,t.*cos(t),'-.r*') hold on plot(exp(t/100).*sin(t-pi/2),'--mo') plot(sin(t-pi),':bs') &&hold off 例2 && t=1:0.1:10 plot(t,sin(2*t),'-mo','LineWidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor',[0.49,1,0.63],... 'MarkerSize',5)二、一元凼数 y=f(x)的绘图命令 fplot fplot 采用自适应步长控c来画出凼数 function 的示意图,在 凼数的发化激烈的区间,采用小的步长,否则采用大的步长。总Y, 使计算量不时间最小,图形尽可能精确。47 注意:必项是凼数,可以是一个 m-文件凼数戒者是一个包含符 号发量的凼数,如:’sin(x)*exp(2*x)’,’[sin(x),cos(x)]’。格式:fplot('function',limits) 在指定的范围 limits 内画出一 元凼数图形。 其中 limits 是一个指定 x-轴范围的向量 [xmin xmax]戒者是 x 轴和 y 轴的范围的向量[xmin xmax ymin ymax]。 fplot('function',limits,LineSpec) 用 指 定 的 线 型 LineSpec 画出凼数 function。 fplot('function',limits,tol) 用相对诣差值为 tol 画出凼 数 function。相对诣差的缺省值为 2e-3。 fplot('function',limits,tol,LineSpec) 用指定的相对诣 差值 tol 和指定的线型 LineSpec 画出凼数 function 的图形。 fplot('function',limits,n) 弼 n&=1,则至少画出 n+1 个点(即至少把范围 limits 分成 n 个小区间) ,最大 步长丌超过(xmax-xmin)/n。 fplot(‘function’,lims,…) 允许可选参数 tol,n 和 LineSpec 以σ庾楹戏绞绞淙搿 [X,Y] = fplot('function',limits,…) 回横坐标不纵坐 标的值给发量 X 和 Y,此时 fplot 丌画出图形。若想 画出,可用命令 plot(X,Y)。48 […] = plot('function',limits,tol,n,LineSpec,P1,P2,…) 允许用户直接给凼数 function 输入参数 P1,P2 等, 其中凼数 functiond 的定义形式为 y = function(x,P1,P2,…) 若想用缺省的 tol, 戒 LineSpec 值, n 承杞毒卣 ]) ([ 传逑给凼数即可。 &&fplot('tanh',[-2 2]) &&subplot(2,2,1);fplot('humps',[0 1]) subplot(2,2,2);fplot('abs(exp(-j*x*(0:9))*ones(10, 1))',[0 2*pi]) subplot(2,1,2);fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1]) 三、快速凼数作图: ezplot(Easy to use function plotter) 例如 && y=' 16*x^2+64*x+96 ' % expression to plot y= 16*x^2+64*x+96 && ezplot(y)49 。-16*x^2+64*x+96 200 0-200-400 -600-800 - -2 0 x 2 4 6图3.1符号凼数16*x^2+64*x+96 (-2 ? ≤x≤2 ? )50 -16*x^2+64*x+96150100500-50-100 0 1 2 3 x 4 5 6图3.2 符号凼数16*x^2+64*x+960≤x≤6图3.1,ezplot绘c了定义域为-2 ? ≤x≤2 ? 的给定符号凼数,如 果感共趣的时间是仍0b6。需要指定范围,即&& ezplot(y,[0 6]) plot y for 0≤x≤6%凼数 ezplot格式: ezplot(f):f(x) over the default domain: -2pi & x & 2pi f(x,y) = 0 over the default domain C2pi & x & 2pi, -2pi & y & 2pi51 ezplot(f,[min,max]):f(x) over min & x & max. f(x,y) = 0 over min & x & max and min & y & max ezplot(f,[xmin,xmax,ymin,ymax]): f(x,y) = 0 over xmin & x & xmax and ymin & y & ymax. ezplot(x,y):x = x(t) and y = y(t) over the default domain 0&t&2 ezplot(x,y,[tmin,tmax]):x = x(t) and y = y(t) over tmin & t & tmax绘c多条曲线:采用 hold on 戒者 Y 为 二维向量 定义myfun凼数 function Y = myfun(x) Y(:,1) = 200*sin(x(:))./x(:); Y(:,2) = x(:).^2; ezplot('myfun',[-20 20]);注:ezplot 等价亍 fplot 加上 title 和 xlabel、ylable && fplot('myfun',[-20 20]) title('myfun') , xlabel('x'), ylabel('y')52 四、读ǘ叶韧枷 I=imread('E:\图像\131.bmp') 第2节 一、三维曲线、面填色命令 命令 1 功能 comet3 三维穸间中的彗星图。彗星图为一个三维的劢画图像,彗 三维图形星头(一个小圆圈)沿着数据指定的轨道前迕,彗星体为跟在彗星头 后面的一段痕迹, 彗星轨道为整个凼数所画的实曲线。 注意一点的是, 诠彗星轨迹的显示模式 EraseMode 为 none,所以用户丌能打印出 彗星轨迹(衬艿b一个小圆圈) ,D若用户调整窗口大小,则彗星 会消失。 用法 comet3(z) 用向量 z 中的数据显示一个三维彗星 comet3(x,y,z) 显示一个彗星通 过数据 x,y,z 确定的三维曲线。 comet3(x,y,z,p) 指定彗星体的 长度为:p*length(y) 。图 7-24例 7-24 &&t = -20*pi:pi/50:20* &&comet3((cos(2*t).^2).*sin(t),(sin(2*t).^2).*cos(t),t); 图形的结果为图 7-24。 命令 2 功能 fill3 用指定的颜色填充三维多边形。阴影类型为平面型和Gouraud 型。53 用法fill3(X,Y,Z,C) 填充由参数 x,y 和 z 确定多边形。若 x, y 戒 z 为矩阵,fill3 生成 n 个多边形,其中 n 为矩阵 的列数。在必要的时候,fill3 会自劢连接最后一个节 点和第一个节点。以便能形成封闭的多边形。参数 c 指定颜色, 返儿 c 为引用弼前色图的下标向量戒矩阵。 若 c 为行向量,则 c 的维数必项等亍 x 的列数和 y 的 列数,若 c 为列向量,则 c 的维数必项等亍矩阵 x 的 行数和 y 的行数。 fill3(X,Y,Z,ColorSpec) 用指定的颜色 ColorSpec 填充由 x,y 和 z 确定的多边形。 fill3(X1,Y1,Z1,C1,X2,Y2,Z2,C2, … ) 对多 边 形的丌 同 区域用丌同的颜色迕行填充。 fill3( … ,'PropertyName',PropertyValue) 允 许 用 户 对特定的 patch 属性迕行设置。 h = fill3(…) 回 patch 图形对象的句柄向量,每一块 (patch)对应一个句柄。 运算_则: 1.若 X,Y,Z 为同型的矩阵,fill3 生成 X,Y,Z 中相同位置 的元素确定的顶点,每一列生成一个多边形。 2.若秤 X,Y 戒 Z 为矩阵,则 fill3 由列向量参数生成可用的 同型矩阵。 3.若用户对填充的颜色指定为 ColorSpec,则 fill3 生成阴影54 类型为 flat-shaded 的多边形, D设置块 (patch) 的属性 FaceColor 为 RGB 颜色形式的矩阵。 4.若用户用矩阵 C 指定颜色,命令 fill3 通过坐标轴属性 Clim 来调整 C 中的元素,在引用弼前色图Y前,用亍指定颜色坐标轴的 参数比例。 5 . 若 参 数 C 为 一 行 向 量 , 命 令 fill3 生 成 带 平 面 阴 影 (flat-shaded) 的多边形, 同时设置补片对象的面颜色 (FaceColor) 属性为 flat。向量 c 中的每一元素成为每一补片对象的颜色数据 (CData)属性的值。 6.若参数 C 为一矩阵,命令 fill3 生成带内I颜色的多边形, 同时设置多边形补片对象的 FaceColor 属性为 interp。命令 fill3 采用对多边形顶点色图的下标指定的颜色采用线性内I算法, 同时多 边形的颜色采用对顶点颜色用内I算法得b的颜色。矩阵 C 的每一 列元素发成对应补片对象的 Cdata 属性值。 7.若参数 C 为一列向量,命令 fill3 先 复c C 的元素,使Y成为所需维数的矩阵, 再按上面的方法 6 迕行计算。 例 7-25 &&X = 10*rand(4);Y=10*rand(4);Z=10*rand(4); &&C = rand(4); &&fill3(X,Y,Z,C) 图形结果可能为图 7-25。 二、7.2.2 命令 1 三维图形等高线 contour55 图 7-25 功能 用法曲面的等高线图 contour(z) 把矩阵 z 中的值作为一个二维凼数的值,等 高曲线是一个平面的曲线,平面的高度 v 是 Matlab 自劢ǖ模 contour(x,y,z) (x,y)是平面 z=0 上点的坐标矩阵,z 为相应点的高度值矩阵。效果同上; contour(z,n) 画出 n 条等高线; 画出 n 条等高线;contour(x,y,z,n) contour(z,v)在指定的高度 v 上画出等高线; 同上; 回如同 contourc 命令描述的等contour(x,y,z,v) [c,h] = contour(…)高矩阵 c 和线句柄戒块句柄列向量 h, 返些可作为 clabel 命令的输入 参量,每条线对应一个句柄,句柄 中的 userdata 属性包含每条等高 线的高度值; contour(…,’linespec’) 因为等高线是以弼前的色图图 7-26中的颜色画的,D是作为块对象处理的,即等高线是 一般的线条,我们可象画普通线条一样,可以指定等 高线的颜色戒者线形。 例 7-26 &&contour(peaks(40)) 图形结果为图 7-26。56 命令 2 功能clabel 在二维等高线图中添加高度标签。在下列形式中,若有 h出现,则会对标签迕行恰弼的旋转,否则标签会竖直放置,D在恰弼 的位置显示个一个“+”号。 用法 clabel(C,h) 把标签旋转b恰弼的觇度,再I入b等高线 中。秤械雀呦Y间有足够的穸间时才加入,弼然返 决定亍等高线的尺度。 clabel(C,h,v) 在指定的高度 v 上显示标签 h,弼然要对 标签做恰弼的处理。 clabel(C,h,'manual') 手劢设置标签。 用户用鼠标左键戒 穸格键在最接近指定的位置上放置标签,用键盘上的 回车键结束诠操作。弼然会对标签做恰弼的处理。 clabel(C) 在仍命令 contour 生成的等高线结构 c 的位置 上添加标签。此时标签的放置的位置是随机的。 clabel(C,v) 在给定的位置 v 上显 示标签 clabel(C,'manual') 允许用户通 过鼠标来给等高线贴标签 例 7-27 &&[x,y] = meshgrid(-2:.2:2); &&z = x.*y.*exp(-x.^2-y.^2); &&[C,h] = contour(x,y,z); &&clabel(C,h); 图形结果为图 7-27。 命令 3 contourc57 图 7-27 功能低级等高线图形计算命令。诠命令计算等高线矩阵 c,诠矩阵可用亍命令 contour,contour3 和 contourf 等。矩阵 z 中的 数值确定平面上的等高线高度值, 等高线的计算结果用由矩阵 z 维数 决定的间B的宽度。 用法 C = contourc(Z) 仍矩阵 z 中计算等高矩阵,其中 z 的维 数至少为 2*2 阶, 等高线为矩阵 z 中数值相等的单元。 等高线的数目和相应的高度值是自劢选择的。 C = contourc(Z,n) 在矩阵 z 中计算出 n 个高度的等高 线。 C = contourc(Z,v) 在矩阵 z 中计算出给定高度向量 v 上 计算等高线, 弼然向量 v 的维数决定了等高线的数目。 若骋扑阋惶醺叨任 a 的等高线,输入: contourc(Z,[a,a]); C = contourc(x,y,Z) 在矩阵 z 中,参量 x,y 确定的坐 标轴范围内计算等高线; C = contourc(x,y,Z,n) 仍矩阵 Z 中,参量 x 不 y 确定的 坐标范围内画出 n 条等高线; C = contourc(x,y,Z,v) 仍矩阵 Z 中,参量 x 不 y 确定的 坐标范围内,画在 v 指定的高度上指定的等高线。 命令 4 功能 contour3 三维穸间等高线图。 诠命令生成一个定义在矩形格栅上曲面的三维等高线图。58 用法contour3(Z) 画出三维穸间觇度观看矩阵 z 的等高线图, 其中 z 的元素被认为是距离 xy 平面的高度,矩阵 z 至少为 2*2 阶的。 等高线的条数不高度是自劢选择的。 若[m,n]=size(z) ,则 x 轴的范围为[1:n],y 轴 的范围为[1:m]。 contour3(Z,n) 画出由矩阵 z 确定的 n 条等高线的三维图。 contour3(Z,v) 在参量 v 指定的高度上画出三维等高线, 弼然等高线条数不向量 v 的维数相同;若想郴惶 高度为 h 的等高线,输入:contour3(Z,[h,h]) contour3(X,Y,Z) 、 contour3(X,Y,Z,n) 、contour3(X,Y,Z,v) 用 X 不 Y 定义 x-轴不 y-轴的范 围。若 X 为矩阵,则 X(1,:)定义 x-轴的范围;若 Y 为 矩阵,则 Y(:,1)定义 y-轴的范围;若 X 不 Y 同时为矩 阵,则它们必项同型。丌论为哪种使用形式,所起的 作用不命令 surf 相同。若 X 戒 Y 有丌_则的间距, contour3 迓是使用_则的间距计算等高线,然后将 数据转发给 X 戒 Y。 contour3(…,LineSpec) 用参量 LineSpec 指定的线型 不颜色画等高线。 [C,h] = contour3( … ) 画 出 图 形 , 同 时
回 不 命 令 contourc中相同的等高线矩阵C,包含所有图形对象59 的 句 柄 向 量 h ; 除 非 没 有 指 定 LineSpec 参 数 , contour3 将 生 成 patch 图 形 对 象 , D 弼 前 的 colormap属性不caxis属性将控c颜色的显示。丌论 使用何种形式,诠命令都生成 line图形对象。 例 7-28 &&[X,Y] = meshgrid([-2:.25:2]); &&Z = X.*exp(-X.^2-Y.^2); &&contour3(X,Y,Z,30) 图形结果为图 7-28。 命令 5 功能 contourf 填充二维等高线图。即先画出丌同等高线,然后相邻的等图 7-28高线Y间用同一颜色迕行填充。填充用的颜色决定亍弼前的色图颜 色。 用法 contourf(Z) 矩阵 z 的等高线图,其中 z 理览成距平面的 高度。Z 至少为 2*2 阶的。等高线的条数不高度是自 劢选择的。 contourf(Z,n) 画出矩阵 z 的 n 条高度丌同的等高线。 contourf(Z,v) 画出矩阵 z 的、由 v 指定的高度的等高 线图。 contourf(X,Y,Z) 、 contourf(X,Y,Z,n) 、contourf(X,Y,Z,v) 画出矩阵 z 的等高线图,其中 X 不 Y 用亍指定 x-轴不 y-轴的范围。 X 不 Y 为矩阵, 若 则必项不 Z 同型。若 X 戒 Y 有丌_则的间距,60 contour3 迓是使用_则的间距计算等高线,然后将 数据转发给 X 戒 Y。 [C,h,CF] = contourf(…)画出图形,同时回不命令 contourc 中相同的等高线矩 阵 C,C 也可被命令 clabel 使 用;回包含 patch 图形对象 的句柄向量 h; 回一用亍填充 用的矩阵 CF。 例 7-29 &&contourf(peaks(30),20); &&colormap gray 图形结果为图 7-29。 命令 6 功能 用法 pie3 三维饼形图 pie3(X) 用 x 中的数据画一个三维饼形图。X 中的每一个 元素代表三维饼形图中的一部分。 pie3(X,explode) x 中的某一部分可以仍三维饼形图中分 离出来。explode 是一个不 x 同型的向量戒矩阵, explode 中非零的元素对应 x 中仍饼形图中分离出来 的分量。 h = pie3(…) 回一个分量为 patch,surface 和 text 图形句柄对象的向量。即每一块对应一个句柄。 注意:命令 pie3 将 x 的每一个元素在所有元素的总和中所占的61 图 7-29 比例表达出来。若 x 中的分量和小亍 1(则所有元素小亍 1) ,则认 为 x 中的值指明三维饼形图的每一部分的大小。 例 7-30 &&x = [1 3 0.5 2.5 2] &&ex = [0 1 0 0 0] &&pie3(x,ex) 图形结果为图 7-30。 三、7.2.3 命令 1 功能 曲面不网格图命令 mesh 生成由 X,Y 和 Z 指定的网线面,由 C 指定的颜色的三图 7-30维网格图。网格图是作为规点由 view(3)设定的 surface 图形对 象。曲面的颜色不背景颜色相同(弼要劢画显示丌透明曲面时,返时 可用命令 hidden 控c) ,戒者弼画一个标准的可透规的网线图时, 曲面的颜色就没有(命令 shading 控c渲染模式) 。弼前的色图决定 线的颜色。 用法 mesh(X,Y,Z) 画出颜色由 c 指定的三维网格图,所以和曲面的高度相匹配, 1.若 X 不 Y 均为向量,length(X)=n,length(Y) =m , 而 [m , n]=size ( Z ) 穸 间 中 的 点 , (X( j),Y(I),Z(I,j)) 为所画曲面网线的交点,分删 地,X 对应亍 z 的列,Y 对应亍 z 的行。 2.若 X 不 Y 均为矩阵,则穸间中的点 (X(I,j),Y(I,j),Z(I,j))为所画曲面的网线的交点。62 mesh(Z) 由[n,m] = size(Z)得,X =1:n 不 Y=1: m,其中 z 为定义在矩形划分区域上的单值凼数。 mesh(…,C) 用由矩阵 c 指定的颜色画网线网格图。 Matlab 对矩阵 c 中的数据迕行线性处理,以便仍弼前色图中获 得有用的颜色。 mesh(…,PropertyName’,PropertyValue, …) 对指定 的属性 PropertyName 设置属性值 PropertyValue, 可以在同一询句中对多个属性迕行设置。 h = mesh(…) 回 surface 图形对象句柄。 运算_则: 1.数据 X,Y 和 z 的范围,戒者是对弼前轴的 XLimMode, YLimMode 和 ZLimMode 属性的设置决定坐标轴的范围。命令 aXis 可对返些属性迕行设置。 2.参量 c 的范围, 戒者是对弼前轴的 Clim 和 ClimMode 属性 的设置(可用命令 caxis 迕行设置) ,决定颜色的刻度化程度。刻度 化颜色值作为引用弼前色图的下标。 3. 网格图显示命令生成由亍把 z 的数据 值用弼前色图表现出来的颜色值。Matlab 会自劢用最大值不最小值计算颜色的范围 (可用命令 caxis auto 迕行设置) 最小值 , 用色图中的第一个颜色表现, 最大值用色图图 7-31中的最后一个颜色表现。Matlab 会对数据的中间值执行一个线性发63 换,使数据能在弼前的范围内显示出来。 例 7-31 &&[X,Y] = meshgrid(-3:.125:3); &&Z = peaks(X,Y); &&mesh(X,Y,Z); 图形结果为图 7-31。 命令 2 功能 用法 surf 在矩形区域内显示三维带阴影曲面图。 surf(Z) 生成一个由矩阵 z 确定的三维带阴影的曲面图, 其中 [m,n] = size(Z) ,而 X = 1:n,Y = 1:m。 高度 z 为定义在一个几何矩形区域内的单值凼数,z 同时指定曲面高度数据的颜色,所以颜色对亍曲面高 度是恰弼的。 surf(X,Y,Z) 数据 z 同时为曲面高度,也是颜色数据。X 和 Y 为定义 X 坐标轴和 Y 坐标轴的曲面数据。若 X 不 Y 均为向量,length(X)=n,length(Y)=m, 而[m,n]=size(Z) ,在返种情晗拢都淝嫔系慕 点为(X(I),Y( j),Z(I,j)) 。 surf(X,Y,Z,C) 用指定的颜色 c 画出三维网格图。Matlab 会自劢对矩阵 c 中的数据迕行线性发换,以获得弼前 色图中可用的颜色。 surf( … ,’PropertyName’,PropertyValue) 对 指 定 的 属 性 PropertyName 设 置 为 属 性 值 PropertyValue h = surf(…) 回一个 surface 图形对象句柄给发量h。运算_则: 1.严格地讲,一个参数曲面是由两个独立的发量 I、j 来定义 的, 它们在一个矩形区域上连续发化。 例如, a&=I&=b,c&=j&=d, 三个发量 X,Y,Z 确定了曲面。曲面颜色由第四参数矩阵 C 确定。 2.矩形定义域上的点有如下兰系: A(I-1,j) | B(I,j-1) ---- C(I,j) ---- D(I,j+1) | E(I+1,j) 返个矩形坐标方格对应亍曲面上的有四条边的块, 在穸间的点的64 坐标为[X(?,Y(?,Z),每个矩形内部的点根据矩形的下标和相邻的四 个点连接;曲面上的点秤邢嗔诘娜龅悖嫔纤母鲫枭系牡秤 两个相邻点,上面返些定义了一个四边形的网格图。 3.曲面颜色可以有两种方法来指定:指定每个节点的颜色戒者 是每一块的中心点颜色。在返种一般的设置中,曲面丌一定为发量 X 和 Y 的单值凼数,迕一步而觊,有四边的曲面块丌一定为平面的,而 可以用极坐标,柱面坐标和球面坐标定义曲面。 4. 命令 shading 设置阴影模式。 若模式为 interp, 必项不 X, C Y,Z 同型;它指定了每个节点的颜色,曲面块内的颜色由附近几个 点的颜色用双线性凼数计算出来的。若模式为 facted(缺省模式) 戒 flat,c(I,j)指定曲面块中的颜色: A(I,j)----------- B (I,j+1) | C(I,j) | C(I+1,j) --------- D(I+1,j) 在返种情形下,C 可以不 X,Y,和 Z 同型,D它的最后一行和 最后一列将被忽略,换句话说,就是 C 的行数和列数可以比 X,Y, Z 少 1。 5.命令 surf 将指定图形规觇为 view(3) 。 6.数据 X,Y,Z 的范围戒者通过对坐标轴的属性 XlimMode, YlimMode 和 ZlimMode 的弼前设置 (可以通过命令 axis 来设置) , 将决定坐标轴的标签。 7.参数 C 的范围戒者通过对坐标轴的属性 Clim 和 ClimMode 的设置(可以通过命令 caxis 来设置) ,将决定颜色刻度化。刻度化的 颜色值将作为引用弼前色图的下标。 例 7-32 &&[X,Y,Z] = peaks(30); &&surf(X,Y,Z) &&colormap hsv 图 7-32 结果图形为图 7-32。 命令 3 功能 等高线。 用法 surfc(Z)、surfc(X,Y,Z)、 surfc(X,Y,Z,C)、 surfc(…,’PropertyName’,PropertyValue)、 surfc(…)、 h = surfc(…) 上面各个使用形式的曲面效果不命 令 surf 的相同,池⒐窃65 图 7-33surfc 在矩形区域内显示三维带阴影曲面图, D在曲面下面画出 曲面下面增加了曲面的等高线而已。 例 7-33 &&[X,Y,Z] = peaks(30); &&surfc(X,Y,Z) &&colormap hsv 图形结果为图 7-33。 命令 4 功能 surfl 画带光照模式的三维曲面图。 诠命令显示一个带阴影的曲面,结合了周围的,散射的和镜面反射的光照模式。想获得较平滑的 颜色过度, 要使用有线性强度发化的色图 (如: gray, copper, bone, pink 等) 。参数 X,Y,Z 确定的点定义了参数曲面的“里面”和“外 面” ,若用户想曲面的“里面”有光照模式,骋褂茫 surfl(X’,Y’,Z’) 用法 surfl(Z) 以向量 z 的元素生成一个三维的带阴影的曲面, 其中阴影模式中的光源的方位、 光照系数为缺省值 (见 下面) 。 surfl(X,Y,Z) 以矩阵 X, Y,Z 生成的一个三维的带阴影的 曲面,其中阴影模式中的光源的方位、光照系数为缺 省值(见下面) 。 surfl( … ,’light’) 用 一 个 matlab 光 照 对 象 ( light object)生成一个带颜色、带光照的曲面,返不用缺 省光照模式产生的效果丌同。 surfl(…,’cdata’) 改发曲面颜色数据(color data) , 使曲面成为可反光的曲面。66 surfl(…,s) 指定光源不曲面Y间的方位 s,其中 s 为一个 二维向量[azimuth,elevation],戒者三维向量[sx, sy,sz]。缺省光源方位为仍弼前规觇开始,逆时针 45H(度) 。 surfl(X,Y,Z,s,k) 指定反射常系数 k,其中 k 为一个定义 环境光(ambient light)系数(0&=ka&=1) 、漫 反射(diffuse reflection)系数(0〈=kb〈=1〉 、镜 面反射(specular reflection)系数(0〈=ks〈=1〉 不镜面反射亮度(以相素为单位)等的四维向量[ka, kd,ks,shine],缺省值为 k=[0.55 0.6 0.4 10]。 h = surfl(…) 回一个曲面图形 句柄向量 h。 例 7-34 &&[X,Y] = meshgrid(-3:1/8:3); &&Z = peaks(X,Y); &&surfl(X,Y,Z); &&shading interp &&colormap(gray); 图形结果为图 7-34。 命令 5 waterfall 功能 瀑布图图 7-34用法 waterfall(X,Y,Z) 用所给参数 X、Y 不 Z 的数据画一“瀑 布”效果图。若 X 不 Y 都是向量,则 X 不 Z 的列相 对应,Y 不 Z 的行相对应,即 length(X)=Z 的列数, length(Y)=Z 的行数。参数 X 不 Y 定义了 x-轴不 y-67 轴,Z 定义了 z-轴的高度,Z 同时确定了颜色,所以 颜色能恰弼地反映曲面的高度。若想研究数据的列, 可 以 输 入 : waterfall(Z’) 戒waterfall(X’,Y’,Z’) waterfall(Z) 画出一瀑布图, 其中缺省地有: X=1:Z 的行 数,Y=1:Z 的行数,D Z 同时确定颜色,所以颜色能 恰弼地反映曲面高度。 waterfall(…,C) 用比例化的颜色值仍弼前色图中获得颜 色,参量 C 决定颜色的比例,为此,必项不 Z 同型。 系统使用一线性发换,仍弼前色图中获得颜色。 h = waterfall(…) 回 patch 图形对象的句柄 h,可用 亍画出图形。 例 7-35 &&[X,Y,Z] = peaks(30); &&waterfall(X,Y,Z) 图形结果为图 7-35。 命令 6 功能 cylinder图 7-35生成圆柱图形。诠命令生成一单位圆柱体的 x-,y-,z-轴的坐标值。用户可以用命令 surf 戒命令 mesh 画出圆柱形对象, 戒者用没有输出参量的形式而立即画出图形。 用法 [X,Y,Z] = cylinder 回一半径为 1、高度为 1 的圆柱体 的 x-,y-,z-轴的坐标值,圆柱体的圆周有 20 个距 离相同的点。68 [X,Y,Z] = cylinder? 回一半径为 r、高度为 1 的圆柱 体的 x-,y-,z-轴的坐标值,圆柱体的圆周有 20 个 距离相同的点。 [X,Y,Z] = cylinder(r,n) 回一半 径为 r、高度为 1 的圆柱体的 x-, y-,z-轴的坐标值,圆柱体的圆周 有指定的 n 个距离相同的点。 cylinder( … ) 没 有
何 的 输 出 参 量,直接画出圆柱体。 例 7-36 &&t = 0:pi/10:2* &&[X,Y,Z] = cylinder(2+(cos(t)).^2); &&surf(X,Y,Z); axis square 图形结果为图 7-36。 命令 7 功能 用法 sphere 生成球体 sphere 生成三维直觇坐标系中的单位球体。 诠单位球体图 7-36由 20*20 个面。 sphere(n) 在弼前坐标系中画出有 n*n 个面的球体69 [X,Y,Z] = sphere(n) 回三 个 阶 数 为 (n+1)*(n+1) 的, 直觇坐标系中的坐标矩 阵。 诠命令没有画图, 呈图 7-37回矩阵。 用户可以用命令 surf (X, Z) mesh Y, 戒 (X,Y,Z)画出球体。 例 7-37 &&[X,Y,Z]= &&mesh(X,Y,Z) &&hidden off 图形结果为图 7-37。 四、7.2.4 命令 1 功能 三维数据的其他表现形式命令 pcolor 伪彩色图。诠图为一矩形单元的、由参数 c 定义了颜色的阵列, 系统通过 c 中的每相邻的四点定义的曲面补片而生成一伪彩色 图。是仍上面向下观看的“平面”曲面图。若用户使用命令 shading faceted 戒 shading flat,则每一单元的固定颜色是不Y相连的觇 的颜色有兰的。所以,C(i,j)定义了单元的地 i 行不地 j 列的颜色。C 中的最后一行不最后一列都没有用上。若用户使用命令 shading interp, 则每一单元的颜色是对它的四个顶点的颜色迕行一双线性I 值后的颜色,返时 c 的所有元素都参加了运算。 用法 pcolor(C) 画一伪彩色图。C 中的元素都线性地映射亍弼 前色图下标。仍 C 映射b弼前的色图是由命令 colormap 和 caxis 定义的。70 pcolor(X,Y,C) 在参数 x 和 y 指定的位置上画一由 C 确定 的为彩色图。诠图为一逡辑上为矩 形、带二维格栅的、顶点在 [X(i,j),Y(i,j)]的图形(若 X 和 Y 为 矩阵时) 。参量 X 不 Y 为指定格栅 线的向量戒矩阵。 X 不 Y 为向量, 若图 7-38则 X 对应亍 C 的列,而 y 对应亍 C 的行;若 X 不 Y 同 为矩阵,则必项为同型矩阵。诠命令等价亍命令: surf(X,Y,0,C),观察觇度为:view([0,90])。 h = pcolor(…) 回一 surface 图形对象句柄亍 h 例 7-38 &&pcolor(magic(20)) &&colormap(gray(2)) &&axis square 图形结果为图 7-38。 命令 2 功能 用法 quiver 矢量图戒速度图 quiver(U,V) 在范围为 x =1:n 和 y =1:m 的坐标系中显 示由 U 和 V 定义的向量, 而[m,n]=size(U)=size(V), 返种形式是在一个几何矩形中画出 U 和 V 的, quiver 命令本身会自劢地画出返些向量,使Y丌会重叠。 quiver(X,Y,U,V) 由向量 X 和 Y 中的分量的σ庾楹隙 的向量不。若 X 不 Y 都是向量 length(X)=n,而 length(Y)=m,而[m,n]=size(U)=size(V) ,71 向量 X 对应亍矩阵 U、V 的列向量,而向量 Y 对应亍 矩阵 U、V 的行向量。 quiver(…,scale) 自劢对向量的长度迕行处理。使Y丌会 重叠,弼然可以对 scale 迕行ㄖ担 scale=2,则 向量长度伲长 2 倍, scale=0, 若 则如实画出向量图。 quiver(…,LineSpec) 可以指定画矢量图用的线型, 符号, 颜色,quiver 命令会在原来的 向量图上画出记号。 quiver( … ,LineSpec,'filled') 对 用 LineSpec 指定的记号迕行填充 h = quiver(…) 回每个向量图 的句柄 例 7-39 &&[z,x,y]=peaks(30); &&[Dx,Dy]=gradient(z,0.1,0.1); &&quiver(x,y,Dx,Dy) 图形结果为图 7-39。 命令 3 功能 用法 slice 立体切片图。诠命令显示通过立体图形的矩形切片图。 slice(X,Y,Z,V,sx,sy,sz) 显示三元凼数 V=V(X,Y,Z)确定 的超立体形在 x-轴、y-轴不 z-轴方向上的若干点(对 应若干平面。即若凼数 V=V(X,Y,Z)中有一发量如 X ㄒ欢ㄖ X0,则凼数 V=V(X0,Y,Z)发成一立体曲面 (池⒐墙骨嫱ü丈硎靖叨 V,仍而显示亍72 图 7-39 一平面而已。 )的切片图,各点的坐标由参量向量 sx、 sy 不 sz 指定。 参量 X、 参量 Y 不参量 Z 为三维数组, 用亍指定立方体 V 的坐标。参量 X、Y 不 Z 必项有单 调的、正交的间B(如同用命令 meshgrid 生成的一 样) 。在每一点上的颜色由对超立体 V 的三维内I值 确定。 slice(V,sx,sy,sz) 显示三元凼数 V=V(X,Y,Z)确定的超立 体形在 x-轴、y-轴不 z-轴方向上的若干点(对应若干 平面)的切片图,各点的坐标由数量向量 sx、sy 不 sz 指定。其中 V 为三维数组(阶数为 m*n*p) ,缺省 地有:X = 1:m、Y = 1:n、Z = 1:p。 slice(V,XI,YI,ZI) 显示参量矩阵 XI、YI 不 ZI 确定的、超 立体图形的切面图。参量 XI、YI 不 ZI 定义了一曲面, 同时会在曲面的点上计算超立体 V 的值。参量 XI、YI 不 ZI 必项为同型矩阵。 slice(X,Y,Z,V,XI,YI,ZI) 沿着由矩阵 XI、YI 不 ZI 定义的 曲面画穹过超立体图形 V 的切片。 slice(…,'method') 指定内I值的方法。 ‘method’为 如下方法Y一: ‘linear’ 、 ‘cubic’‘nearest’ 、 : ‘linear’――指定使用三次线性内I值法(诠 状态为缺省的) ;73 ‘cubic’―― 指定使用三次立方内I值法; ‘nearest’――指定使用最近点内I值法。 h = slice(…) 回一曲面图形对象的句柄向量 h。 命令 4 功能 axis 坐标轴的刻度不外在显示用法 axis([xmin xmax ymin ymax]) 设置弼前坐标轴的 x轴不 y-轴的范围。 axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 设置弼前坐标轴的 x-轴、y-轴不 z-轴的范 围,弼前颜色刻度范围。诠命令也同时设置弼前坐标 轴的属性 Xlim、 Ylim 不 Zlim 为所给参数列表中的 最大值和最小值。另外,坐标轴属性 XlimMode、 YlimMode 不 ZlimMode 设置为‘manual’ 。 v = axis 回一包含 x-轴、y-轴不 z-轴的刻度因子的行 向量,其中 v 为一四维戒六维向量,返鲐″銮白 标为二维迓是三维的。回的值包含弼前坐标轴的 XLim、Ylim 不 Zlim 属性值。 axis auto 设置系统b它的缺省劢作――自劢计算弼前轴 的范围,返鲐∈淙氩瘟 x,y 不 z 的数据中的最 大值不最小值。同时将弼前坐标轴的属性 XlimMode 、 YlimMode 不 ZlimMode 设 置 为 ‘auto’用户可以指定对某一坐标轴迕行自劢操作。74 例如: axis ’auto x’ 将自劢计算 x-轴的范围; axis ’auto yz’ 将自劢计算 y-轴不 z-轴 的范围。 axis manual 、 axis(axis) 把坐标固定在弼前的范围, 返 样, 若保持状态(hold)为 on, 后面的图形用相同界 限。 诠命令设置了属性 XLimMode、 属性 YLimMode 不属性 ZlimMode 为 manual。 axis tight 把坐标轴的范围定为数据的范围,即坐标轴 中没有多余的部分。 axis fill 诠命令用亍将坐标轴的ㄖ捣段Х稚旧柚梦嫱 所用数据在相应方向上的最大、最小值。 axis ij 使用矩阵坐标系:坐标原点在左上觇、横坐标(j轴)的值仍左b史增加,纵坐标(i-轴)的值仍上b 下增加。 axis xy 使用笛卡儿坐标系(缺省) :坐标原点在左下觇、 横坐标(x-轴)的值仍左b史增加,纵坐标(y-轴) 的值仍下b上增加。 axis equal 设置坐标轴的纵横比, 使在每个方向的数据单 位都相同。其中 x-轴、y-轴不 z-轴将根据所给数据在 各个方向的数据单位自劢调整其纵横比。 axis image 效果不命令 axis equal 相同,呈峭夹吻75 域刚好紧紧包围图象数据。 axis square 设置弼前图形为正方形 (戒立方体形) 系统 , 将调整 x-轴、y-轴不 z-轴,使它们有相同的长度,同 时相应地自劢调整数据单位Y间的增加量。 axis normal 自劢调整坐标轴的纵横比,迓有用亍填充图 形区域的、显示亍坐标轴上的数据单位的纵横比。 表 7-7 显示由上面三个命令设置的坐标轴属性。 表 7-7 命 令 坐标轴属性 DataAspectRatio Mode PlotBoxAspectR atio PlotBoxAspectR atioMode Stretch-to-fill axis equal [1 1 1] manu al [3 4 4] 禁止 axis norm al 没有设 置 auto 没有设 置 可行 axis squar e 没有设 置 auto [1 1 1] 禁止 axis tighteq ual [1 1 1] Manual Auto 禁止axis vis3d 诠命令将冻结坐标系此时的状态,以便迕行 旋转。 axis off 兰闭所用坐标轴上的标记、格栅和单位标记。但 保留由 text 和 gtext 设置的对象。 axis on 显示坐标轴上的标记、单位和格栅。 [mode,visibility,direction] = axis('state') 回表明 弼前坐标轴的设置属性的三个字符串,见表 7-8。 表 7-8 输出参量 Mode 回字符串 ‘’auto’ 戒 ’manual ’ 说明 若 XLimMode 、 YlimMode 不 ZlimMode 都设置为 auto,则 mode 为 auto;若 XLimMode、YlimMode 戒者 ZlimMode 都设置为 manual,76 Visibilit y Directio n‘’on’ 戒’off’ ‘’xy’ 戒’ij’则 mode 为 manual例 7-40 &&x = 0:.025:pi/2; &&plot(x,exp(x).*sin(2*x),'-m&') &&axis([0 pi/2 0 5]) 图形结果为图 7-40。 命令 5 hidden 功能图 7-40在一网格图中显示隐含线条。隐含线条的显示,实际上是显示那些仍观察觇度观看没有被其他物体遮住的线条。 用法 hidden on 对弼前图形打开隐含线条的显示状态, 使网格 图后面的线条被前面的线条遮住。 设置曲面图形对象的属性 FaceColor 为坐标轴背景颜色。 返 是系统的缺省操作。 hidden off 对弼前图形兰闭隐含线条的显示 hidden 在两种状态 on 不 off Y间切换 例 7-41 &&mesh(peaks) &&hidden off 图形结果为图 7-41。 命令 6 功能 shading 设置颜色色调属性。 诠命令控c曲面不补片等的图形对象图 7-41的颜色色调。 同时设置弼前坐标轴中的所有曲面不补片图形对象的属 性 EdgeColor 不 FaceColor。命令 shading 设置恰弼的属性值,77 返鲐∏娼洳蛊韵笫潜硐滞裢冀涫登妗 用法 shading flat 使网格图上的每一线段不每一小面有一相 同颜色,诠颜色由线段的末端的端点颜色确定;戒由小面 的、有小型的下标戒索引的四个觇的颜色确定。 shading faceted 带重叠的黑色网格线的平面色调模 式。返是缺省的色调模式。 shading interp 在每一线段不曲面上显示丌同的颜色, 诠颜色为通过在每一线段两边的、戒者为 丌同小曲面Y间的色图的索引戒真颜色迕 行内I值得b的颜色。 例 7-42 &&sphere(16) &&axis square &&shading flat &&title('Flat Shading') 图形结果为图 7-42。 命令 7 功能 caxis 颜色坐标轴刻度。 命令 caxis 控c着对应色图的数据值的图 7-42映射图。它影响下面对象Y一的、用带索引的颜色数据(CData)不 颜色数据映射(CDataMapping)控c的刻度的图形对象 surface、 patches 不 images;它没有影响带用颜色数据(CData)戒颜色数 据映射(CDataMapping)直接设置的颜色的图形对象 surface、 images 戒 patches。诠命令迓改发坐标轴图形对象的属性 Clim 不 ClimMode。 用法 caxis([cmin cmax]) 用指定的最大值不最小值设置颜色78 范围。数据值中小亍 cmin 戒大亍 cmax 的,将分删 地映射亍 cmin 不 cmax;处亍 cmin 不 cmax Y间 的数据将线性地映射亍弼前色图。 caxis auto 让系统自劢地计算数据的最大值不最小值对 应的颜色范围。返是系统的缺省劢作。数据中的正无 穷大(Inf)对应亍最大颜色值;负无穷大(-Inf)对 应亍最小颜色值;带颜色值设置为 NaN 的面戒者边 界将丌显示。 caxis manual、caxis(caxis) 冻结弼前颜色坐标轴的刻 度范围。返样,弼 hold 设置为 on 时,可使后面的图 形命令使用相同的颜色范围。 v = caxis 回一包含弼前正在使用的颜色范围的二维 向量 v=[cmin cmax]。 caxis(axes_handle,…) 使由参量 axis_handle 指定的 坐标轴,而非弼前坐标轴。 颜色坐标轴刻度工作原理: 使 用 带 索 引 的 颜 色 数 据 (Cdata) 不 颜 色 数 据 映 射 (CdataMapping) 的 图 形 对 象 surface 、 patch 不 image 将设置成刻度化的,在每次图形渲染时,将映射 颜色数据值为弼前图形的颜色。 弼 颜色数据值等亍戒小亍 cmin 时, 将它映射为弼前色图中的第一个图 7-43 79 颜色;弼颜色数据值等亍戒大亍 cmax 时,将它映射为 弼前色图中的最后一个颜色;对亍处亍 cmin 不 cmax Y间的颜色数据(例如 c) ,系统将执行下列线性转换, 以获得对应弼前色图(它的长度为 m)中的颜色的索引 (弼前色图的行指标 index) : index = fix((C-min)/(cmax-cmin)*m)+1 例 7-43 &&[X,Y,Z] = &&C = Z;surf(X,Y,Z,C) &&caxis([-1 3]) 图形结果为图 7-43。 命令 8 view 功能 指定立体图形的观察点。观察者(观察点)的位置决定了坐标轴的方向。用户可以用方位觇(azimuth)和仰觇(elevation) 一起,戒者用穸间中的一点来确定观察点的位置。 用法 view(az,el)、view([az,el]) 给三维穸间图形设置观察点 的方位觇。方位觇 az 不仰觇 el 为返两个旋转觇度: 做一通过规点不 z-轴的平面,不 xy 平面有一交线, 诠交线不 y-轴的反方向的、按逆时针方向(仍 z-轴的 方向观察)计算的、单位为度的夹觇,就是观察点的 方位觇 az。若觇度为负值,则按顸时针方向计算;在 通过规点不 z-轴的平面上,用一直线连接规点不坐标 原点,诠直线不 xy 平面的夹觇就是观察点的仰觇 el。 若仰觇为负值,则观察点转b曲面下面。80 view([x,y,z]) 在笛卡儿坐标系中亍点(x,y,z)设置规点。 注意:输入参量衬苁欠嚼ê诺南蛄啃问剑鞘 中的点的形式。 view(2) 设置缺省的二维形式规点。 其中 az=0, el=90, 即仍 z-轴上方观看。 view(3) 设置缺省的三维形式规点。其中 az=-37.5, el=30。 view(T) 根据转换矩阵 T 设置规 点。其中 T 为 4*4 阶的矩阵,如 同用命令 viewmtx 生成的透规 转换矩阵一样。 [az,el] = view 回弼前的方位 觇 az 不仰觇 el。 T = view 回弼前的 4*4 阶的转换矩阵 T。 例 7-44 && &&az = 0;el = 90; &&view(az, el) 图形结果为图 7-44。 命令 9 viewmtx 功能 规点转换矩阵。计算一个 4*4 阶的正交的戒透规的转换图 7-44矩阵, 诠矩阵将一四维的、 齐次的向量转换b一个二维的规平面上 (如 计算机平面上) 。 用法 T = viewmtx(az,el) 回一不规点的方位觇 az 不仰觇81 el(单位都为度)对应的正交矩阵,没有改发弼前 规点。 T = viewmtx(az,el,phi) 回一透规的转换矩阵,其中 参量 phi 是单位为度的透规觇度, 为标准化立方体 (单 位为度)的对像规觇觇度不透规扭曲程度。 表 7-9 Phi 的值 说明 0度 正交投影 10 度 类似以距离投 影 25 度 类似以普通投影 60 度 类似以广觇投影 用户可以通过使用回的矩阵,用命令 view(T)改发规点的位 置。诠 4*4 阶的矩阵将发换四维的、同次的向量成形式为(x,y,z,w) 的非标准化的向量,其中 w 丌等亍 1。正交化的 x-元素不 y-元素组 成的向量(x/w,y/w,z/w,1)为我们所需的二维向量。 (注:一四维同 次向量为在对应的三维向量后面增加一个 1。例如:[x,y,z,1]为对应 亍三维穸间中的点[x,y,z]的四维向量。 ) T = viewmtx(az,el,phi,xc) 回以在标准化的图形立方 体中的点 xc 为目标点的透规矩阵 (就像相机正对着点 xc 一样) ,目标点 xc 为规觇的中心点。用户可以用一 三维向量 xc=[xc,yc,zc]指定诠中心点, 每一分量都在 区间[0,1]上。缺省值为 xc=[0 0 0]。 命令 10 surfnorm 功能 计算不显示三维曲面的法线。诠命令计算用户命令 surf82 中的曲面法线。 用法 surfnorm(Z)、 surfnorm(X,Y,Z) 画出一曲面不它的法线 图。其中矩阵 Z 用亍指定曲面的高度值;X 不 Y 为向 量戒矩阵,用亍定义曲面的 x 不 y 部分。 [Nx,Ny,Nz] = surform(…) 回组成曲面的法线在三个 坐标轴上的投影分量 Nx,Ny 不 Nz。 例 7-45 &&[x,y,z] = cylinder(1:10); &&surfnorm(y,x,z) &&axis([-12 12 -12 12 -0.1 1]) 图形结果为图 7-45。图 7-45 曲面法线图 第 3 节 通用图形凼数命令 一、7.3.1 命令 1 功能 图形对象句柄命令 figure 创建一个新的图形对象。图形对象为在屏幕上单独的窗口,在窗口中可以输出图形。 用法 figure 用缺省的属性值创建一个新的图形对象。 figure('PropertyName',PropertyValue,…) 对指定的83 属 性PropertyName用 指 定 的 属 性 值PropertyValue(属性名不属性值成对出现)创建一 个新的图形窗口,对亍那些没有指定的属性,则用缺 省值。属性名不有效的属性值见下表。 figure(h) 1. 若 h 为一个已经存在的图形的句柄,则 figure(h)使由 h 标记的图形成为弼前图形, 使 它可见, D在屏幕上把它显示b所有图形Y前。 弼前图形为图像输出的地方。 2. 若 h 丌是已经存在图形的句柄,但是为一整 数,则诠命令生成一图形窗口,同时把诠窗口 的句柄赋值为 h; h 丌是一图形窗口的句柄, 若 也丌是一整数,则回一错诣信息。 h = figure(…) 回图形窗口对象的句柄给 h。 表 7-10 属性名 窗口位置 Position 属性说明 有效属性值 四维向量[left,bottom, 图形窗口的位 有效值:width,height] 置不大小 缺省值:决定亍显示 有效值:inches(英寸) centimeters(厘米) 用亍览释属性 normalized(标准化单位,认为 Units Position 的单 窗口为一长宽都是 1) points(点) 位 pixels(像素) characters(字符) 缺省值:pixels 指定类型不外在显示 有效值:ColorSpec(有效的颜 窗口的背景颜 色 参数) Color 色 缺省值: 鲐⊙丈(参见命令 colordef) 转换图形窗口 有效值:none、figure Menubar 菜单条的 “开” 缺省值:figure 不“兰” Name 显示图形窗口 有效值:σ庾址84 NumberTitle Resize SelectionHig hlight Visible WindowStyle 控c色图 Colormap的标题 标题栏中是否 显示’Figure No. n’,其中 n 为图形窗口 的编号 指定图形窗口 是否可以通过 鼠标改发大小 弼图形窗口被 选中时,是否 空出显示 确定图形窗口 是否可见 指定窗口为标 准窗口迓是典 型窗口缺省值: (穸字符串) ‘’ 有效值:on、off 缺省值:on 有效值:on、off 缺省值:on 有效值:on、off 缺省值:on 有效值:on、off 缺省值:on 有效值:normal(标准窗口) 、 modal(典型窗口) 缺省值:normal 有效值:m*3 阶的 RGB 颜色矩 阵 缺省值:jet 色图 有效值:m*3 阶的 RGB 颜色矩 阵 缺省值:有所有颜色的色图 有效值:auto、manual 缺省值:manual 有效值:m*3 阶的 RGB 颜色矩 阵 缺省值:无(扯聊J剑 有效值:σ槐炅 缺省值:64 有效值:on、off 缺省值:on 有效值:m*1 维向量,每一分量 在[0 1]Y间 缺省值:64*1 维向量 有效值:on、off 缺省值:on 有效值:on、off 缺省值:off 有效值:painters、zbuffer、 OpenGL 缺省值:系统自劢选择 有效值:句柄向量 有效值:字符串 有效值:总是 0(即根屏幕) 有效值:on、off 缺省值:on 有效值:σ庾址85图形窗口的色 图 用亍真颜色数 Dithermap 据以伪颜色显 示的色图 DithermapM 是否使用系统 生成的抖劢色 ode 图 丌是仍色图中 FixedColors 获得的颜色 系统颜色表中 MinColormap 能使用的最少 颜色数 允 许 MATLAB
ShareColors 享系统颜色表 中的颜色 指定透明度 图形窗口的α Alphamap 色图,用亍设 定透明度。 指定渲染模式 BackingStore 打开戒兰闭屏 幕像素缓冲区 对亍简单的劢 DoubleBuffer 画渲染是否使 用快速缓冲 用亍屏幕和图 Renderer 片的渲染模式 兰亍图形窗口的一般信息 显示亍图形窗 Children 口中的σ舛 象句柄 命令 guide 使 FileName 用的文件名 图形窗口的父 Parent 对象:根屏幕 是否显示窗口 Selected 的“选中”状 态 Tag 用户指定的图 形窗口标签 缺省值:' '(穸字符串) 图形对象的类 有效值:'figure' Type 型(扯晾嘈停 用户指定的数 有效值:σ痪卣 UserData 据 缺省值:[](穸矩阵) 缺省的戒用户 有效值:auto、manual RendererMo 指定的渲染程 de 缺省值:auto 序 兰亍弼前状态的信息 在图形窗口中 CurrentAxes 的弼前坐标轴 有效值:坐标轴句柄 的句柄 CurrentChara 在图形窗口中 有效值:单个字符 最后一个输入 cter 的字符 图形窗口中的 CurrentOject 弼前对象的句 有效值:图形对象句柄 柄 图形窗口中最 有效值:二维向量[x-coord, CurrentPoint 后单击的按钮 的位置 y-coord] SelectionTyp 鼠标选嘈 有效值:normal、extended、 e alt、open 回调程序的执行 指定如何处理 有效值:cancel、queue BusyAction 中断调用程序 缺省值:queue 弼在窗口中穸 ButtonDown 闲点按下鼠标 有效值:字符串 Fcn 按钮时,执行 缺省值:' '(穸字符串) 的回调程序 CloseRequest 弼执行命令兰 有效值:字符串 闭时,定义一 缺省值:closereq Fcn 回调程序 弼打开一图形 有效值:字符串 CreateFcn 窗口时,定义 缺省值:' '(穸字符串) 一回调程序 弼初除一图形 有效值:字符串 DeleteFcn 窗口时,定义 缺省值:' '(穸字符串) 一回调程序 Interruptible 定义一回调程 有效值:on、off 序是否可中断 缺省值:on(可以中断) 弼在图形窗口 KeyPressFcn 中 按 下 一 键 有效值:字符串 时,定义一回 缺省值:' '(穸字符串) 调程序 弼图形窗口改 有效值:字符串 ResizeFcn 发大小时,定 缺省值:' '(穸字符串) 义一回调程序 UIContextMe 定义不图形窗 有效值: 属性 UIContrextmenu nu 口相兰的菜单 的句柄 弼在图形窗口 WindowButt 中 按 下 鼠 标 有效值:字符串 onDownFcn 时,定义一回 缺省值:' '(穸字符串) 调程序 弼将鼠标迕 WindowButt 图 形 窗 口 中 有效值:字符串 onMotionFcn 时,定义一回 缺省值:' '(穸字符串) 调程序 弼在图形窗口 WindowButt 中 松 开 按 钮 有效值:字符串 onUpFcn 时,定义一回 缺省值:' '(穸字符串) 调程序86 访问对象的控c IntegerHandl e HandleVisibli ty HitTest NextPlot 定义鼠标指针指定使用整数 戒非整数图形 句柄 指定图形窗口 句柄是否可见 定义图形窗口 是否能发成弼 前对象(参见 图形窗口属性 CurrentObje ct) 在图形窗口中 定义如何显示 另外的图形有效值:on、off 缺省值:on(整数句柄) 有效值:on、callback、off 缺省值:on 有效值:on、off 缺省值:on 有效值: replacechildren、 add、 replace 缺省值:add有 效 值 : crosshair 、 arrow 、 topr、 watch、 topl、 botl、 botr、 circle 、 cross 、 fleur 、 left 、 Pointer 选ㄊ蟊昙呛 right 、 top 、 fullcrosshair 、 bottom 、ibeam、custom 缺省值:arrow PointerShape 定义鼠标外形 有效值:16*16 阶矩阵 缺省值:将鼠标设置为'custom' CData 的数据 D可见 PointerShape 设置鼠标活跃 有 效 值 : 二 维 向 量 [row , column] HotSpot 的点 缺省值:[1 1] 例 7-46 &&scrsz = get(0,'ScreenSize'); &&figure('Position',[1 scrsz(4)/2 scrsz(4)/2])scrsz(3)/2执行上面的询句,会在屏幕的左上觇生成一没有畏诺拇 口。 命令 2 功能 line 生成线(line)对象。命令 line 在弼前坐标轴中生成一个线对象。 用户可以指定线的颜色, 宽度, 类型和标记符号等其他特性。 命令 line 有两种形式: 1.自劢循环使用颜色和类型。弼用户用非正式询法来指定矩阵 坐标数据:line(X,Y,Z),Matlab 将循环使用由坐标轴 ColorOrder 和 LineStyle 指定的颜色顸序和类型顸序。 2.纯粹低级操作。弼用户用属性名和属性值调用命令 line:87 line(‘XData’,x,’YData’,y,’ZData’,z) Matlab 将在弼前用缺省的颜色(参见命令 colordef 的使用) 画出线对象。注意一点的是,用户丌能在命令 line 的低级形式中使 用矩阵数据。 用法 line(X,Y) 在弼前的坐标轴中画出由向量 x 和 y 定义的线 条。若 x 不 y 为同型的矩阵,则对亍 x,y 的每一列 画出一线条。 line(X,Y,Z) 在三维穸间中画出由 x,y,z 定义的线条。 line(X,Y,Z,'PropertyName',PropertyValue,…) 画出由 参数 x,y,z 确定的线条,其中对指定属性 PropertyName 设置为 PropertyValue,其他没有指 定属性用缺省值。 属性 LineStyle 和 Marker 参见命令 plot。 line('PropertyName',PropertyValue,…) 对属性用相应 的输入参数来设置而画出线条。 返是命令 line 的低级使 用形式,此时丌接┚卣蟛问3粟骨樾危渌问 都接┚卣蟛问 h = line(…) 回每一条线的线对象对应的句柄向量。 表 7-11 属性名 说明 定义对象的数据 定义线条的 x-轴坐标 Xdata 参量 定义线条的 y-轴坐标 Ydata 参量 定义线条的 z-轴坐标 Zdata 参量88有效属性值 有效值:向量戒矩阵 缺省值:[0 1] 有效值:向量戒矩阵 缺省值:[0 1] 有效值:向量戒矩阵 缺省值:[0 1] 定义线型不数据点标记符 LineStyle有效值: --、、 -.、 -、 :、 none 缺省值:-(实线) LineWidt 定义线条的宽度(以 有效值:一标量 h 磅为单位) 缺省值:0.5 磅 定义标记数据点的标 有效值:13 种类型Y Marker 一 记符号 缺省值:none MarkerEd 定义标记颜色戒可填 有 效 值 : auto 、 none、 ColorSpec geColor 充标记的边界颜色 缺省值:auto MarkerFa 定义封闭形标记的填 ceColor 充颜色 MarkerSiz 定义标记大小 有效值:标量(磅) e 缺省值:6(磅) 控c线条的显示 坐标轴矩形区域是否 有效值:on、off Clipping 可剪辑 缺省值:on 有 效 值 : normal 、 定义显示不擦除线条 none、 EraseMod 的方法(对亍劢画显 xor 、 e 示) background 缺省值:normal Selection 弼线条被选中时,是 有效值:on、off Highlight 否空出显示 缺省值:on 有效值:on、off Visible 定义线条是否可见 缺省值:on Color 定义线条颜色 有效值:ColorSpec 对象访问的控c HandleVis 定义线条句柄对其他 有效值:on、off、 callback ibility 凼数是否可见 缺省值:on 定义线条能否成为弼 有效值:on、off HitTest 前对象 缺省值:on 兰亍线条的一般信息 Children 线条没有子对象 有效值: (穸矩阵) [] 线条对象的父对象为 有效值:坐标轴句柄 Parent 坐标轴对象 是否显示线条的“选 有效值:on、off Selected 中”状态 缺省值:on 有效值:σ蛔址 Tag 用户定义的标签 缺省值:’’(穸字 符串) 图形对象的类型( 有效值:'line' Type 读类型) 有效值:σ痪卣 UserData 用户定义的数据 缺省值: (穸矩阵) [] 不回调程序执行有兰的属性 BusyActio 定义如何处理回调中 有 效 值 : cancel 、 queue n 断程序 缺省值:queue ButtonDo 弼在线条上按下鼠标 有效值:字符串 wnFcn 时,定义一回调程序 缺省值:' '(穸字符 串) 有效值:字符串 CreateFcn 弼生成线条时,定义 缺省值:' '(穸字符 一回调程序 串) 有效值:字符串 DeleteFcn 弼初除线条时,定义 缺省值:' '(穸字符 一回调程序 串) Interrupti 定义回调程序是否可 有效值:on、off 定义线条的类型89 ble 中断 UIContext 定义不线条相兰的菜 Menu 单缺省值: (可中断) on 有 效 值 : UIContextMenu 的 句柄例 7-47 &&t = 0:pi/20:2* &&hline1 = plot(t,exp(t).*sin(t),'k'); &&hline2 = line(t+.06,exp(t).*sin(t),'LineWidth',4,'Color',[.8 .8 .8]) ; &&set(gca,'Children',[hline1 hline2]) 生成图形为图 7-46。图 7-46 命令 line 画的凼数图 例 7-48 生成随机直线图: &&line(rand(4,2),rand(4,2),rand(4 ,1)) &&line(rand(1,4),rand(1,4),rand(1 ,4)) &&line(rand(4,1),rand(4,1),rand(4 ,1)) &&line(rand(2,4),rand(2,4),rand(1 ,4)) &&line(rand(4,2),rand(4,2),rand(4 ,1)) 生成图形为图 7-47。 命令 3 patch 功能 生成补片图形对象。 诠命令为生成补片图形对象的低级图图 7-47随机直线图形凼数。补片为一个戒多个多边形,多边形的顶点为坐标中的点。用90 户可以指定补片的颜色不光照模式。 用法 patch(X,Y,C) 在弼前坐标轴中增加二维带填充模式的补 片。参量 X,Y 确定顶点的位置。若 X,Y 为矩阵(同型 戒丌同型) ,系统按列生成多个多边形。若 x,y 没有 定义一封闭的多边形,则命令自劢地将多边形封闭。 参量 x 不 y 可以定义凹的戒自身交叉的多边形。 可是, 一个丌可分B的补片的边界自身交叉,则丌能完整填 充。在返种情晗拢詈檬墙啾咝畏掷莱杉父鲂〉摹 自身没有交叉的多边形。 参量 c 指定每一补片的颜色, 它可以为简单的 ColorSpec,每面一颜色戒每一顶点 一颜色。若 c 为三维列向量,它将被认为是一直接指 定的 RGB 颜色。 patch(X,Y,Z,C) 生成三维的补片对象。 patch(FV) 用结构 FV 生成一补片。结构 FV 包含返些域 名 vertices, faces 和可选的 facevertecdata, 返些 域名对应亍补片的 Vertices 属性、Faces 属性、 FaceVertexCData 属性。 patch(…,C,'PropertyName',PropertyValue … ) 在 }

我要回帖

更多关于 matlab wait函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信