第二章 Matlab 基本语法(一般性操作)§1矩阵和数组的操作Ⅰ——创建 保存 调用概述:矩阵是线性代数的基本运算单元,通常矩阵是含有M 行和N 列数值的矩形结构。
其元素可以是实数或复数,因而可将矩阵分为实数矩阵和复数矩阵。
MATLAB 支持线性代数所定义的全部矩阵运算。
软件的优势在于快捷和轻松的处理整个矩阵。
通过一定的转化方法,可以将一般的数学运算转化成相应矩阵运算来处理。
在MATLAB 中把数据分为标量、矢量、矩阵和列阵。
列阵指多维数组,是一大概念,在列阵中,一维数组是矢量,二维数组即为矩阵。
当然,我们也可杷标量看作仅有一行一列的矩阵,把矢量看作仅有一列或一行的矩阵。
一、知识背景1. n m ⨯ 阶矩阵,记作n m A ⨯或n m ij a ⨯)(如:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡mn m m n n a a a a a a a a a 212222111211 ,为m 行n 列矩阵 2. 数组:可看成是单行或单列矩阵。
3. 同型矩阵:二矩阵行数和列数相同,如n m n m B A ⨯⨯,。
4. 特殊矩阵:见矩阵创建3。
二、矩阵的创建1. 直接输入法:用指令产生数值矩阵矩阵首尾以 [ ] 括起;同一行中元素用逗号“,”或空格隔开;行与行之间必须用分号“;”或按Enter 键分隔。
矩阵元素可以是数字也可以是表达式,表达式中变量必须定义。
例1:创建矩阵:⎥⎦⎤⎢⎣⎡=6 5 43 2 1a>> a=[1,2,3;4,5,6]a =1 2 34 5 6例2:>> x=9,y=pi/6; % 定义x ,y 变量>> A=[3,5,sin(y);cos(y),x^2,7;x/2,5,1] % 产生矩阵AA =3.0000 5.0000 0.50000.8660 81.0000 7.00004.50005.0000 1.0000说明:%作为注释的开始标志,以后的文字不影响计算过程。
练习一:1-1 创建矩阵:⎥⎦⎤⎢⎣⎡=6 4 25 3 1A 1-2 创建矩阵:⎥⎦⎤⎢⎣⎡=sin(y) )cos(os(y) sin(x)x c B ,其中x=π/4,y=π/3。
>> x=pi/4,y=pi/3;x =0.7854>> B=[sin(x),cos(y);cos(x),sin(y)]B =0.7071 0.50000.7071 0.86602. 矩阵编辑器(Matrix Editor ):(1)首先在工作区定义一个变量,可以是一简单矩阵或数字。
(2)单击工具栏的工作区浏览器(work spase browser )。
弹出变量浏览器,显示各变量信息。
或单击View/ work space 弹出变量浏览器,显示各变量信息。
(3)选中所定义变量,左键双击,或单击右键,在点击“open ”,打开矩阵编辑器。
也可左键单击工具按钮,打开矩阵编辑器。
图1-1 矩阵编辑器窗口(4)在相应文本框中,输入行数和列数。
用鼠标点中想要修改的元素,输入数值或表达式。
(5)输入完闭,关闭矩阵编辑器。
* 当把原矩阵扩大维数,系统自动将扩展部分设置为零。
* 矩阵编辑器适于大维数矩阵的建立、修改,扩充和裁剪。
练习二:2-1定义a=1,用矩阵编辑器创建矩阵⎥⎦⎤⎢⎣⎡=6 5 43 2 1a ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⇒6 5 4 3 2 1a ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⇒0 9 8 7 0 6 5 4 0 3 2 1a ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⇒23 10 5 40 9 8 7 0 6 5 4 0 3 2 1a3. 生成矩阵函数(特殊矩阵函数):例3:>> zeros(2,3)ans =0 0 00 0 0>> B=eye(2,3)B =1 0 00 1 0>> C=magic(3)C =8 1 63 5 74 9 2>> D=cell(2,3)D =[ ] [ ] [ ][ ] [ ] [ ]>> ones(2,3)ans =1 1 11 1 1>> rand(2,3)ans =0.9501 0.6068 0.89130.2311 0.4860 0.7621>> M=[1,2,3;4,5,6;7,8,9]M =1 2 34 5 67 8 9>> Q=diag(M)Q =159>> w=diag(Q)w =1 0 00 5 00 0 9例4:利用diag产生对角阵对角阵是线性代数中经常使用的矩阵,MATLAN有专门产生对角阵的函数diag(M),M是一个矩阵或是一个向量。
>> a=randn(5,5)a =-1.0565 -0.9219 0.5077 -1.0091 1.09501.4151 -2.1707 1.6924 -0.0195 -1.8740-0.8051 -0.0592 0.5913 -0.0482 0.42820.5287 -1.0106 -0.6436 0.0000 0.89560.2193 0.6145 0.3803 -0.3179 0.7310>> d=diag(a)d =-1.0565-2.17070.59130.00000.7310>> D=diag(d)D =-1.0565 0 0 0 00 -2.1707 0 0 00 0 0.5913 0 00 0 0 0.0000 00 0 0 0 0.7310* 请总结各指令生成矩阵特点。
* 当函数diag(M)作用在矩阵上,则取矩阵对角元素产生一个列向量; 当作用在一向量上,则产生一对角阵。
三、矩阵的保存和调用可把需保留的矩阵以文件形式储存起来,以备以后调用。
例5:保存矩阵A 并调用。
>> save mydata1 A %系统将工作空间中的A 变量存入mydata1.mat 文件 >> load mydata1 A %提取mydata1文件A 变量到工作空间保存所有矩阵幷调用矩阵w>> save mydata2 %系统将工作空间中的所有变量存入mydata2.mat 文件 >> load mydata2 w %提取mydata2文件中w 变量到工作空间中* 上面mydata 是给变量文件(随意)起的名子,系统会自动沿设定好的路径以“.mat ”格式储存文件。
四、数组的创建和储存数组是由一组实数或复数构成的长方阵列,可具有不同的维数。
下面把重点放在一维数组,多维数组问题放在后面讲解。
因为一维数组可看成行向量,)1(),1(n m ⨯⨯矩阵,所以有关矩阵的创建、储存和读取方法全可适用。
1. 直接输入法例6:>> a=[pi/4,sin(pi/4),cos(pi/4),tan(pi/4),cot(pi/4)]a =0.7854 0.7071 0.7071 1.0000 1.00002. 用两个冒号算符组成等增量语句以“:”间隔起始值、增量值、终止值。
若增量值省略不写,MATLAB 默认为1。
例7:t=[初值:增量:终值]>> t1=[0:0.2:1] % 增量(步长值)为0.2t1 =0 0.2000 0.4000 0.6000 0.8000 1.0000>> t2=[10:-3:-5] % 增量可为负值t2 =10 7 4 1 -2 -5>> t3=[1:6] % 增量1为默认值,可略t3 =1 2 3 4 5 63. 创建特殊数组指令(等距离分割)(1)线性分割函数linspace(a,b,n)---( 起始值,终止值,元素数目) 例8:>> t4=linspace(0,10,5)t4 =0 2.5000 5.0000 7.5000 10.0000* 在a ,b 间(含a ,b )均匀产生n 个点值,形成n ⨯1阶向量,等差数列。
* n 的默认值为100。
* 常用于绘图中区间的分割。
(2)对数分割函数logspace(a,b,n)——(起始值a 10,终止值b 10,元素数目n )例9:>> t5=logspace(0,4,5)t5 =1 10 100 1000 10000* 在b a 10,10间(含b a 10,10)产生n 个点值,形成n ⨯1阶向量,等比数列。
* n 的默认值为50。
§2. 矩阵和数组的操作Ⅱ--- 修改、结构变换一、对矩阵元素的标识1. 对某个元素的标识(1)用行标和列标标识某个元素,如ij A ——用),(j i A 表示。
i 、j 所用的值必须大于或等于1且小于矩阵的维数,否则失败。
例10:>> A=[1,2,3;4,5,6;7,8,9]A =1 2 34 5 67 8 9>> A(3,2)ans =8(2)用一个指标表示一个元素——把整个矩阵看作很多列矢量组成,自左至右,由第一列、第二列直到最右边一列,想象排成一长列,用一个指标标识元素。
如(3×3)阶矩阵,元素A (3,2)可表示为A (6)。
例11:>> A(6)ans =8(3)对矢量中一元素如i B 可用B(i )表示。
例12:>> B=[1,3,5,7,9,]B =1 3 5 7 9>> B(3)ans =5(4)end 表示最后一个元素,如:A(end,j )表示第j 列最后一个元素。
例13:>> A(end,2)ans =82. 对一行或一列的全部元素的标识——用冒号算符如:A(:,j)表示A的第j列的全部元索。
A(i,:)表示A的第i行的全部元素。
例14:>> A(2,:)ans =4 5 6二、矩阵的修改1. 修改矩阵元素例15:>> a=rand(2,3) % 生成32⨯阶随机矩阵a =0.9501 0.6068 0.89130.2311 0.4860 0.7621>> a(1,2)=2 % 改元素a为212a =0.9501 2.0000 0.8913 % 修改完毕0.2311 0.4860 0.76212. 扩充矩阵例16:把矩阵a扩充为43⨯阶,设a(3,4)=5>> a(3,4)=5a = %其它未设定的扩充元素均赋值为00.9501 2.0000 0.8913 00.2311 0.4860 0.7621 00 0 0 5.0000例17:给a第四行全行赋值>> a(4,:)=[1,2,3,4] %给第四行全行赋值a =0.9501 2.0000 0.8913 00.2311 0.4860 0.7621 00 0 0 5.00001.00002.00003.00004.0000 %“:”冒号代表第四行全部元素3.剪切和拼接矩阵(1)提取元素组成新矩阵例18:>> c=a([1,4],[2,4]) %把A的第一行,第四行和第二列,第四列交点上的元素取出,组成新矩阵cc =2 02 4(2)除去某些元素组成新矩阵例19:>> a([1,3],:)=[] %用空矩阵[ ]除去a的第一、三行全部元素,剩二,四行a =0.2311 0.4860 0.7621 01.00002.00003.00004.0000(3)拼接矩阵例20:>> d=[rand(2),ones(2);eye(2,4)] %二阶随机矩阵和二阶单位矩阵左右拼接,2 对角矩阵进行上下拼接。