1、复 习,第二章、 MATLAB 程序设计语言基础 2.1 MATLAB安装与启动 2.2 MATLAB环境 2.3 MATLAB数值运算基础 2.3.1 常量与变量 2.3.2 MATLAB运算符 2.3.3 矩阵的MATLAB表示 2.3.4 多维数组定义,例 题,【例6】逻辑操作应用之一:逐段解析函数的计算和表现。本例演示削顶整流正弦半波的计算和图形绘制。 t=linspace(0,3*pi,500);y=sin(t); z1=(t2*pi).*y; w=(tpi/3 subplot(131),plot(t,y,:r),ylabel(y) subplot(132),plot(t,z1,:r
2、), axis(0 10 -1 1) subplot(133),plot(t,z2,-b), axis(0 10 -1 1),第三课,2.3.5 常用函数及运算,一、矩阵函数,zeros( ) 函数:生成元素全为零的矩阵。 ones( ) 函数:生成元素全为1的矩阵。 rand( ) 函数:生成均匀分布随机矩阵。 randn( )函数:生成正态分布随机矩阵。 diag( ) 函数:生成对角矩阵。 size( ) 函数:返回指定矩阵的行数和列数。 eye( ) 函数:生成指定行数和列数的单位矩阵。,矩阵运算函数举例,C=zeros(3,2) D=ones(2,3) E=rand(2,5) F=r
3、andn(3,5) Y=magic(4);Z=diag(Y) a=1 2 3;4 5 6;b=size(a) c=eye(b) a=1 2 3;4 5 6;7 8 9;b=size(a);c=eye(b),矩阵函数,1. det( ):求矩阵的行列式矩阵A=aij的行列式定义为,2. trace( ):求矩阵的迹矩阵的迹为该矩阵对角线上元素的和。矩阵的迹和该矩阵的特征值之和是相同的。,式中k1,k2, ,kn是将序列1,2, ,n的元素交换k次所得到的一个序列。,3. rank( ):求矩阵的秩若矩阵所有的列向量中共有rc个线性无关,则称矩阵的列秩为rc ,如果rc =m,则称该矩阵为列满秩矩
4、阵。同理,若矩阵所有的行向量中共有rr个线性无关,则称矩阵的列秩为rr ,如果rr =n,则称该矩阵为行满秩矩阵。可以证明:矩阵的行秩和列秩是相等的,即rank(A)= rc= rr,5. V, D = eig(A ):求特征值与特征向量对一个矩阵A来说,如果存在一个非零的向量x,且有一个标量满足,4. poly( ):求矩阵特征多项式系数,则称为A矩阵的一个特征值,而x为对应于特征值的特征向量。 其中,D为一个对角矩阵,其对角线上的元素为矩阵A的特征值,而每个特征值对应的V矩阵的列为该特征值的特征向量。,举 例,det(A),trace(A),rank(A), V,D=eig(A) form
5、at long B=poly(A) %由于矩阵A的特征多项式系数相差太悬殊,%所以调用该语句以显示更多位有效数字,求矩阵A的行列式、迹、秩、特征值及特征向量,及其特征多项式系数,二、多项式运算,roots( ):多项式求根 求 的根。,p=1 2 3 4 5;roots(p) 2. poly( ):由根求多项式 已知多项式的根分别为1、5、8,求此根对应的多项式。 p1=poly(1 5 8),二、多项式运算,3. polyval( ):多项式求值p=1 2 3 4 5; polyval(p,3) 4. residue( ):多项式部分分式展开,,分解方法如下:num =1 2; den =1
6、 4 3; r p k=residue(num,den) 则,三、字符串,在MATLAB中,字符串作为字符数组用单引号引用到程序中。 c=Ok MATLAB 注意:变量c实际上是一个19字符数组,因为字符数组中空格也算一个字符。字符是以ASCII数值的格式储存的。可用如下命令查看变量C在MATLAB内部的存储格式:x=double(c) 用char( )指令可将ASCII码的相应数字转化为字符。例如 char(x),字符串运算举例,本例演示:串的基本属性、标识和简单操作。 (1)创建串数组a=This is an example. (2)串数组a的大小size(a) (3)串数组的元素标识a1
7、4=a(1:4) %提出一个子字符串 ra=a(end:-1:1) %字符串的倒排,字符串运算举例,(4)串数组的ASCII码 ascii_a=double(a) %产生ASCII码 char(ascii_a) %把ASCII码变回字符串 (5)对字符串ASCII码数组的操作 %使字符串中字母全部大写 w=find(a=a %找出串数组a中,小写字母的元素位置。,find( )函数:用来得出满足指定条件的数组(矩阵)下标向量。 如本例a=This is an example.则这条指令执行后w=2 3 4 6 7 9 10 12 13 14 15 16 17 18,ascii_a(w)=asc
8、ii_a(w)-32; %大小写字母ASCII值差32.用数值加法改变部分码值。 char(ascii_a) %把新的ASCII码翻成字符,(6)中文字符串数组 A=这是一个算例。; %创建中文字符串 A_s=size(A) %串数组的大小 A56=A(5 6) %取串的子数组 ASCII_A=double(A) %获取ASCII码 char(ASCII_A) %把ASCII码翻译成字符 (7)创建带单引号的字符串 b=Example 4.1.2-1 (8)由小串构成长串 ab=a(1:7), ,b, . %这里第2个输入为空格串,2.4 M文件和MATLAB函数,M文本编辑器 利用文本编辑器
9、编写M文件 为创建新M文件,启动编辑器的三种操作方法; 打开已有的M文件的三种操作方法; 经编写或修改后,文件的保存方法。,一、脚本(Script)文件,在MATLAB中,实现某项功能的一串MATLAB命令与函数组合的M文件叫脚本文件。这种M文件在MATLAB的工作空间内对数据进行操作,能在MATLAB环境下直接执行。脚本文件不仅能够对工作空间内已存在的变量进行操作,并能将建立的变量及其执行后果保存在MATLAB的工作空间中,供在以后的计算中被使用。除此之外,脚本文件执行后的结果既可以显示输出,也能够使用MATLAB的绘图函数来产生图形输出结果。与函数文件相比,脚本文件既不带输入参量也不带输出
10、参量。,二、函数(Function)文件,函数文件是MATLAB语言最重要的组成部分。MATLAB 提供的各种各样的工具箱差不多都是以函数形式给出的。1) 函数:能够接受输入参数并返回输出参数的M文件。2) MATLAB中,函数名和M文件名必须相同。3) 函数只能在函数体内对变量进行操作,也就是只能访问函数本身工作空间中的变量。在MATLAB中,函数是以两种不同的形式提供给用户的。一种是内置在MATLAB核心中最基本的运算函数,另一种是通过M文件实现的函数。,函数文件的结构,1)函数定义行:以关键字“function“开头,并在首行中列出全部输入、输出参量以及函数 名。输出参数紧跟在“func
11、tion”之后,常用方括号括起来;输入参量紧跟在函数名之后,常用圆括号括起来。2) H1行:是函数帮助文本的第一行,以“%”号开头,用来概要说明该函数的功能。在MATLAB中用命令“lookfor”查找某个函数时,查找到的就是函数H1行及其相关信息。,3) 函数帮助文本:在H1之后而在函数体之前的说明文本就是函数帮助文本。在MATLAB中用命令“help函数名”联机帮助时,就会显示函数H1行与帮助文本。4) 函数体:是函数的主要部分。函数体中的所有参数都是函数内部变量,这些变量与MATLAB工作空间内的变量是分离的。5) 注释:除在H1行、函数帮助文本、函数体里以“%”号开头的注释外,有的函数
12、在函数体后还跟注释行,用以说明各种需要交代的问题。,函数文件的参数,在函数的首行中必须有其输入、输出参数。1)参数传递规则:函数输入参数可以用对变量赋值的办法来传递,也可以直接输入数据。而输出参数通常都是通过变量来传递的。2)固定变量“nargin”与“nargout”:函数空间里有两个固定变量“nargin”与“nargout”,其变量值分别为函数实际输入参数的个数与实际输出参数的个数。3)固定变量“varargin”与“varargout”:函数空间里还有两个固定变量“varargin”与“varargout”,用来将任意个输入参数传递给函数与返回任意多个输出参数。,M函数文件示例,fun
13、ction sa = circle(r,s) %CIRCLE plot a circle of radii r in the line specified by s. % r 指定半径的数值 % s 指定线色的字符串 % sa 圆面积 % % circle(r) 利用蓝实线画半径为 r 的圆周线. % circle(r,s) 利用串 s 指定的线色画半径为 r 的圆周线. % sa=circle(r) 计算圆面积,并画半径为 r 的蓝色圆面. % sa=circle(r,s) 计算圆面积,并画半径为 r 的 s 色圆面.% 编写于1999年4月7日,修改于1999年8月27日。,if narg
14、in2 error(输入宗量太多。);end; if nargin=1 s=b;end; clf; t=0:pi/100:2*pi; x=r*exp(i*t); if nargout=0 plot(x,s); else sa=pi*r*r; fill(real(x),imag(x),s) end, axis(square),说 明,从结构上看,M脚本文件仅比M函数文件少一个“函数申明行”,其余各部分的构造和作用都相同。 函数定义名和保存名一致。不一致时,将忽视文件首行的函数定义名,而以保存文件名为准。 函数文件的名字必须以字母开头,后面可以是字母、下划线以及数字的任意组合,但不得超过31个字符
15、。,例 题,举例:已知电路图如下,试求出节点a、b、c处的电压。R1=2,R2=3,R3=3,R4=4,R5=5,R6=3,例 题,解:通过节点电压法,可得出电压方程为:,用MATLAB求解方程的过程如下:,文件名ex_cir.m clear a=1/2+1/4+1/3, -1/4, -1/3; 0, 1/4+1/3+1/5, -1/5; 0, 0, 1/3+1/3+1/5; a(2,1)=a(1,2);a(3,1)=a(1,3); a(3,2)=a(2,3); a y=20/2; 0; 5/3 x=ay; x,运行结果,a =1.0833 -0.2500 -0.3333-0.2500 0.7833 -0.2000-0.3333 -0.2000 0.8667 y =10.000001.6667 ans =13.3453 6.4401 8.5420,练 习,1、A=1 2; 3 4; B=2*ones(2)*A, C= 2.*ones(2).*A, D=2*eye(2)*A, E=2.*eye(2).*A, 2、str=Dalian Jiaotong University s16=str(1:6), s_len=size(str) w=find(s16=a & s16=z),