资源描述
第第2 2章章 MATLABMATLAB矩阵及其运算矩阵及其运算u MATLAB变量和数据操作u MATLAB矩阵及其操作u MATLAB运算与矩阵分析u 字符串注:本章是本课程的基础之一数据术语数据术语 矩阵:矩阵:由由mn个数组成的排成个数组成的排成m行行n列的一个列的一个矩形的数表,其中矩形的数表,其中00矩阵为空矩阵矩阵为空矩阵()。数表中第数表中第i(1im)行第行第j(1jn)列的数据称列的数据称为矩阵元素。为矩阵元素。标量(标量(1 1),向量(行向量),向量(行向量(1 n),列,列向量)是矩阵的特例。向量)是矩阵的特例。2.1 变量和数据操作变量和数据操作2.1 变量和数据操作变量和数据操作2.1.1 变量与赋值(什么是变量)变量与赋值(什么是变量)1变量命名在MATLAB 中,变量名是以字母开头字母开头,后接字母、字母、数字或下划线数字或下划线的字符序列(不能包含空格和标点不能包含空格和标点不能包含空格和标点不能包含空格和标点符号符号符号符号),最多63个字符。在MATLAB中,变量名区分字母的大小写区分字母的大小写。关键字和函数名不能作为变量名。可以改变,重新赋值2赋值语句(1)变量变量=表达式表达式 (2)表达式表达式其中表达式是用运算符运算符将有关运算量连接起来的式子,其结果是一个矩阵。形式形式1 1中,中,=代表的是赋值操作,将表达式的值代表的是赋值操作,将表达式的值赋给变量;赋给变量;EX:EX:命令窗口输入命令窗口输入a=1 回车回车 形式形式2 2中,将表达式的值赋给中,将表达式的值赋给MATLABMATLAB的临时变量的临时变量ansans。EX:EX:命令窗口输入命令窗口输入100 回车回车2.1.2 预定义变量预定义变量(软件自带)软件自带)在MATLAB系统中,存在一些由系统本身定义的变量。例如,用pi表示圆周率;用i,j表示虚数单位。复数表示方法:2+3i 预定义变量有特定的含义,在定义变量时,应避免与这些变量重复。例2-1 计算表达式的值,并显示计算结果。在MATLAB命令窗口输入命令:x=1+2i;y=3-sqrt(17);z=(cos(abs(x+y)-sin(78*pi/180)/(x+abs(y)输出结果是:z=-0.3488+0.3286i注:分号只运行赋值操作,不显示结果。基本算术运算符表示:加,减,乘,除等p29;变量需要先赋值,再进行相关计算(符号计算除外)2.1.3 内存变量的管理1内存变量的删除与修改MATLAB工作空间窗口工作空间窗口专门用于内存变量的管理。l 选中变量,再单击Delete按钮,能删除这些变量。l 选中变量,再单击Open Selection按钮,将进入 变量编辑器(双击变量也可进入);通过变量编辑器可以直接观察变量中的具体元素,也可修改变量中的具体元素。l who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单。who命令只显示出驻留变量的名称;whos在给出变量名的同时,还给出它们的大小、所占字节数及数据类型等信息。l clear命令命令用于清除MATLAB工作空间中的变量 EX:命令窗口输入 clear并回车2内存变量文件内存变量文件(保存变量的文件)保存变量的文件)利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来,扩展名是.mat。MAT文件的生成由save来完成。常用格式为:save 文件名文件名 变量名表变量名表 其中,文件名可以带扩展名,也可以不带;l 变量名表中的变量个数不限,只要工作空间或文件中存在即可,变量名之间以空格空格分隔。l 当变量名表省略时,保存或装入全部变量。l保存后的变量,需要用的时候如何导出?1。命令方式 load 文件名文件名 变量名表变量名表 2。快捷方式(双击内存变量文件)快捷方式(双击内存变量文件)在命令窗口依次输入下述命令:在命令窗口依次输入下述命令:cleara=2;b=3;c=4;save%变量变量a,b和和c默认默认保存在保存在matlab.mats save mydata1.mat ave mydata1.mat%变量变量a,ba,b和和c c保存在保存在mydata1.matmydata1.matsave mydata2 a bsave mydata2 a b%变量变量a,ba,b保存在保存在mydata2.matmydata2.mat注:注:%表示注释,用于解释说明,对命令不产生表示注释,用于解释说明,对命令不产生影响影响%a=23a=232.1.4 MATLAB常用数学函数常用数学函数MATLAB提供了许多数学函数数学函数,函数的自变量规定为矩阵变量,运算法则运算法则是将函数逐项作用于矩阵的是将函数逐项作用于矩阵的元素上元素上,因而运算的结果是一个与自变量同维数的与自变量同维数的矩阵矩阵。函数的使用:函数名函数名(变量或数值或表达式变量或数值或表达式)(举例)(举例)cos(2*pi),real(2+5i),a=sin(pi)Matlab基本函数都是小写函数使用说明:(1)三角函数以弧度为单位计算。(2)abs函数可以求实数的绝对值、复数的模函数可以求实数的绝对值、复数的模、字符串的ASCII码值。(3)自然对数函数(lnxlog(x)),自然指数函数(exexp(x))2.1.5 数据的输出格式数据的输出格式 MATLAB用十进制数表示一个常数,具体可采用日常记数法日常记数法和科学记数法科学记数法两种表示方法。数据输出时matlab默认为短格式;可以用format命令设置或改变数据输出格式。format命令的格式为:format 格式符其中格式符决定数据的输出格式注意:matlab科学计数法e3,2e3,1e,1e-2,1E2,1E-2i,2E-1-i,.e或E表示10为底的指数2.2 MATLAB矩阵矩阵2.2.1 矩阵的建立1直接输入法 从键盘直接输入矩阵的元素直接输入矩阵的元素。具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号逗号分隔,不同行的元素之间用分号分号分隔。元素可以是数值或表达元素可以是数值或表达式元素,表达式可以由数字、变量、运算式元素,表达式可以由数字、变量、运算符和函数等组成。符和函数等组成。在命令窗口中输入在命令窗口中输入a=1,2,3;4,5,6;7,8,9按回车键,命令就被执行,在按回车键,命令就被执行,在MATLABMATLAB命令窗命令窗中显示以下结果:中显示以下结果:a=a=a=a=1 2 3 1 2 3 1 2 3 1 2 3 4 5 6 4 5 6 4 5 6 4 5 6 7 8 9 7 8 9 7 8 9 7 8 9 在命令窗口输入语句:在命令窗口输入语句:x=abs(-2)cos(pi)sqrt(4)运行结果?运行结果?建立复数矩阵:建立复数矩阵:b=1+2i,2+3i;2-i,3-2ib=b=1.0000+2.0000i 2.0000+3.0000i1.0000+2.0000i 2.0000+3.0000i2.0000-1.0000i 3.0000-2.0000i 2.0000-1.0000i 3.0000-2.0000i 通过通过表达式表达式建立矩阵元素。建立矩阵元素。2利用M文件建立矩阵 对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。下面通过一个简单例子来说明如何利用M文件创建矩阵。例2-2 利用M文件建立MYMAT矩阵。(1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵:MYMAT=101,102,103,104,105;106,107,108,109,110;(2)把输入的内容存盘(设文件名为mymatrix.m)。(3)在MATLAB命令窗口中输入mymatrix,即运行该M文件,就会自动建立一个名为MYMAT的矩阵(工作空间),可供以后使用。3利用冒号表达式建立一个向量利用冒号表达式建立一个向量(程序设计时常用)程序设计时常用)冒号表达式可以产生一个行向量,一般格式是:e1:e2:e3其中e1为初始值,e2为步长(加法),e3终止值。若e2省略,则步长为1。(EX)a=1:2:23 在MATLAB中,还可以用linspace函数产生行向量。其调用格式为:linspace(a,b,n)其中a和b是生成向量的第一个和最后一个元素,n是元素总数。A=linspace(1,23,12)显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。4建立大矩阵大矩阵可由方括号中的小矩阵或向量建立起来。A=1,2,3;4,5,6;7,8,9,B=1,3,5;4,6,8;7,9,11C=A,B;B,AC=1 2 3 1 3 5 4 5 6 4 6 8 7 8 9 7 9 11 1 3 5 1 2 3 4 6 8 4 5 6 7 9 11 7 8 9注意行和列数注意行和列数2.2.2 矩阵的拆分矩阵的拆分1矩阵元素的引用方式1)通过下标引用矩阵的元素通过下标引用矩阵的元素,例如 A=1,2,3;4,5,6;7,8,9A(3,2)=200 注意:如果给出的下标大于矩阵的行数和列数,则自动扩展原有矩阵,没赋值的元素为0。A(4,5)=202)采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序。在MATLAB中,矩阵元素按列存储,先第一列,再第二列,依次类推。例如A=1,2,3;4,5,6;A(3)ans=2序号(Index)与下标(Subscript)是一一对应的,以mn矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。求矩阵大小size(A)给出矩阵的行数和列数length(A)给出行数和列数的较大者C=1,2,3;3,4,5size(A)length(A)2利用冒号表达式获得子矩阵 A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素;A(i:i+m,:)表示取A矩阵第ii+m行的全部元素;A(:,k:k+m)表示取A矩阵第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素;A(end,:)?A(:)将矩阵每一列元素堆积起来,成为列向量。A=1,1,1,1;2,2,2,2;3,3,3,3;4,4,4,43.利用空矩阵删除矩阵的元素在MATLAB中,定义为空矩阵。给变量X赋空矩阵的语句为X=。注意,X=与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。如果想将矩阵中的部分元素删除,可以利用空矩阵的方法。注意要整行或整列。4改变矩阵的形状 reshape(A,m,n)函数在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。注意:在MATLAB中,矩阵元素按列存储,即首先存储矩阵的第1列元素,然后存储第2列元素,一直到矩阵的最后一列元素。reshape函数只是改变原矩阵的行数和列数,即改变其逻辑结构,但并不改变原矩阵元素个数及其存储结构。2.2.3 特殊矩阵1通用的特殊矩阵常用的产生通用特殊矩阵的函数有:zeros:产生全0矩阵(零矩阵)。ones:产生全1矩阵(幺矩阵)。eye:产生单位矩阵。rand:产生01间均匀分布的随机矩阵。randn:产生均值为0,方差为1的标准正态分布随机矩阵。例2-3 分别建立33、32和与矩阵A同样大小的零矩阵。(1)建立一个33零矩阵。zeros(3)(2)建立一个32零矩阵。zeros(3,2)(3)设A为23矩阵,则可以用zeros(size(A)建立一个与矩阵A同样大小零矩阵。A=1 2 3;4 5 6;%产生一个23阶矩阵Azeros(size(A)%产生一个与矩阵A同样大小的零矩阵*2用于专门学科的特殊矩阵(1)魔方矩阵魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。(2)范得蒙矩阵 (3)希尔伯特矩阵(4)托普利兹矩阵(5)伴随矩阵(6)帕斯卡矩阵练习练习1.利用clear命令清除工作空间的变量(若工作空间没有变量,可先任意新建一个);2.按下列方式对变量赋值A=pi,2*pi;4*pi,0;10*pi,0.5*pi;B=1+2i,3-5i,5;4,6-2i,8;7,9+3i,11;3.求出求出2题中题中A的正弦函数并赋给变量的正弦函数并赋给变量C,求出,求出2题中题中B的实部和虚部分别赋给变量的实部和虚部分别赋给变量Br和和Bi。4.将将3题中的变量题中的变量C,Br和和Bi保存下来,保存保存下来,保存数据的文件名自己选取(英文名)数据的文件名自己选取(英文名)5.利用下列矩阵A和B产生C矩阵,取出C的后3行构成矩阵D。A=1,2;4,5;7,8;B=1,3,5;4,6,8;7,9,11;C=1 3 5 1 2 4 6 8 4 5 7 9 11 7 8 1 2 1 3 5 4 5 4 6 8 7 8 7 9 116.将5题中C矩阵的第3行和第4行的全部元素改为0,然后再将C矩阵第2列全部元素值改为0。7.利用单位矩阵和幺矩阵产生如下矩阵d=1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
展开阅读全文