




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、直接输入法将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。A=1,2,3;4,5,6;7,8,0A=1,2,3;4 5,6;7,8 0087654321A【例1-2】 试输入复数矩阵需要防止的语句B=1+9*i,2+8*i,3+7*j; 4+6*j 5+5*i,6+4*i;7+3*i,8+2*i,iB=1 +9*i,2+8*i,3+7*j; 4+6*j 5+5*i,6+4*i;7+3*i,8+2*i,iiiiiiiiiiB28374655647382912、利用M文件建立矩阵对于比较大且比较复杂的矩阵,可以为它专门建立一
2、个M文件。【例1-3】利用M文件建立mymat矩阵。(1) 启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.(2) 把输入的内容以纯文本方式存盘(设文件名为)。(3) 运行该M文件,就会自动建立一个名为mymat的矩阵,可供以后使用。A=4 10 1 6 2;8 2 9 4 7; 7 5 7 1 5;0 3 4 5 4;23 13 13 0 3 3、利用MATLAB函数建立矩阵几个产生特殊矩阵的函数:zeros、ones、 eye、rand、randn、pascal、 magic(n)、 vander(V)、 hilb(n) 、 toeplitz(x,y)、compan(P) 。这几
3、个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:zeros(m) 产生mm零矩阵zeros(m,n) 产生mn零矩阵。zeros(size(A) 产生与矩阵A同样大小的零矩阵相关的函数有:length(A)给出行数和列数中的较大者,即length(A)=max(size(A);ndims(A)给出A的维数。【例1-4】 分别建立33、32和与矩阵A同样大小的零矩阵。(1) 建立一个33零矩阵:zeros(3)(2) 建立一个32零矩阵:zeros(3,2)(3) 建立与矩阵A同样大小零矩阵:zeros(size(A)此外,常用的函数还有reshape(A,m,
4、n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。【例1-5】 将4阶魔方阵形变为2行8列的矩阵reshaps(magic(4),2,8)hilb(n)指令可以产生nn的 Hilbert 矩阵 11jiHij Hilbert矩阵Hilbert 矩阵的特性: 当矩阵变大时,其矩阵会接近奇异即矩阵的行列式会接近于0,Hilbert矩阵常被用来评估各种逆矩阵计算方法的稳定性。【例1-6】 计算6阶hilbert矩阵的行列式det(hilb(6)x1 = rand(10000, 1);x2 = randn(10000, 1);subplot(2,1,1); hist(x1, 40)
5、; title(均匀分布);subplot(2,1,2); hist(x2, 40); title(高斯分布);set(findobj(gcf, type, patch),EdgeColor, w); % 改边线为白色 【例1-7】产生10000个均匀均匀与正态分布的随机数产生随机数矩阵指令rand 和 randn4、建立大矩阵大矩阵可由方括号中的小矩阵建立起来。A=1 2 3;4 5 6;7 8 0; 冒号表达式的一般格式:v=s1:s2:s3还可以用linspace函数产生行向量:linspace(a,b,n)linspace(a,b,n)与与a:(b-a)/(n-1):b等价等价C=A,
6、eye(size(A);ones(size(A),AA=A;1 2 3;1;2;3;4;【例1-8】使用小矩阵构造大矩阵【例1-9】 用不同的步距生成 (0,p) 间向量V1=0:0.2:piV3=0:-1:piV2=0:piV4=pi:-1:0V5=0:0.2:pi,piV7=0:pi/100:piV6=linspace(0,pi,100)二、对矩阵元素的操作 矩阵A中,位于第i行、第j列的元素可表示为A(i,j) i与j即是此元素的下标Subscript或索引Index MATLAB中所有矩阵的内部表示法都是以列为主的一维向量 A(i,j)和A(i+(j-1)*m)是完全一样的m为矩阵A的
7、列数 1、矩阵的索引或下标我们可以使用一维或二维下标来存取矩阵A=4 10 1 6 2;8 2 9 4 7; 7 5 7 1 5;0 3 4 5 4;23 13 13 0 3 2 、矩阵元素MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如 A(3,2)=200也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推。以mn矩阵A为例,矩阵元素A(i,j)的序号为:(j-1) *m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得。(1) 利用冒号表达式获得子矩阵 A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全
8、部元素;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列中的所有元素。 利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。 B1=A(1:2:end,:)B3=A(:,end:-1:1)B2=A(3,2,1,2:4)A(:,2,4)=ones(4,2) 4、利用空矩阵删除矩阵的元素在MATLAB中,定义 为空矩阵。给变量X赋空矩阵的语句为X= 。【注意】X= 与clear
9、 X不同,clear是将X从工作空间中删除,而空矩阵那么存在于工作空间,只是维数为0。将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。【例2-2】A(2,3,:=fliplr(Aflipud(A)rot90(A) rot90(rot90(A) A=1 2 3 4;5 6 7 8;9 10 11 12A1=diag(A)A2=diag(A,1)A3=diag(A,-1)B1=diag(A1,1)B2=diag(A3,1)6 选取对角元素7 选取上下三角元阵c1=tril(A)c2=tril(A,1)c3=tril(A,-1)d1=triu(A)d2=triu(A,1)D3=t
10、riu(A,-1) 1、直接创立稀疏矩阵例:例:S=sparse(i,j,s,m,n)其中其中i 和和j 分别是矩阵非零元素的分别是矩阵非零元素的行和列指标行和列指标向量,向量,s 是非零元素值是非零元素值向量,向量,m,n 分别是矩阵的行数和分别是矩阵的行数和列数。列数。S2=sparse(1 2 2 3 4 4,3 1 3 4 2 3,. 5 3 3 1 4 3,4,4)稀疏矩阵的输入与生成 2、从文件中创立稀疏矩阵例:设文本文件例:设文本文件 中有三列内容,第一列是一些行下中有三列内容,第一列是一些行下标,第二列是列下标,第三列是非零元素值。标,第二列是列下标,第三列是非零元素值。1 3
11、 52 1 32 3 33 4 14 2 44 3 3利用利用load和和spconvert函数可以从函数可以从包含一系列下包含一系列下标和非零元素的文本文件标和非零元素的文本文件中输入稀疏矩阵。中输入稀疏矩阵。load S=spconvert(T) 3、稀疏带状矩阵的创立例:例:S=spdiags(B,d,m,n)其中其中m 和和n 分别是矩阵的行数和列数;分别是矩阵的行数和列数;d是长度为是长度为p的整数向量,它指定矩阵的整数向量,它指定矩阵S的对角线位置;的对角线位置;B是是全元素矩阵,用来给定全元素矩阵,用来给定S对角线位置上的元素,对角线位置上的元素,行数为行数为min(m,n),列
12、数为,列数为p 。B=rand(4,2);S3=spdiags(B,0 1,4,4) 4、满矩阵与稀疏矩阵之间的转化例:例:S=sparse(A)A=full(S)A=0 0 5 0; 3 0 3 0 ; 0 0 0 1; 0 4 3 0S=sparse(A)whos1. 数学运算2. 逻辑运算三、 Matlab根本运算3. 比较运算4. 位运算符5. 集合运算符一、数学运算MATLAB的根本算术运算有:(加)、(减)、*(乘)、/(右除)、(左除)、(乘方)、共轭转置正号+,负号-【注意】运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。2. 点运算点运算符有.*、./、.和.。两矩
13、阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。 1. 根本算术运算1.转置.,幂次.共轭转置,矩阵幂次2.正号+,负号-3.乘法.*,元素右除./,元素左除.,矩阵乘法*,矩阵右除/,矩阵左除4.加法+,减法-5.冒号:例如: x = 1:2:5 等数学运算符之优先级:同一类的运算符均具有相同的优先度(Priority),因此在计算上,是由左至右依次完成矩阵的数学运算矩阵的数学运算 矩阵的加减与一般标量Scalar的加减类似 相加或相减的矩阵必需具有相同的维度 A = 12 34 56 20;B = 1 3 2 4;C = A + BC1= A-B 例1: 加减法运算矩阵
14、与纯量可以直接进行加减,MATLAB 会直接将加减应用到每一个元素 A=1 2 3 2 1 + 5矩阵的加减法运算矩阵的乘法与除法标量对矩阵的乘或除,可比照一般写法 A = 1 2 3; 4 4 2; C = A/3 B = 2*A欲进行矩阵相乘,必需确认第一个矩阵的列数 Column Dimension 必需等于第二个矩阵的行数Row Dimension 例2:矩阵的乘法A = 1; 2; B = 3, 4, 5; C = A*B 矩阵除法假设A为非奇异方阵,那么X=A-1B假设A为非奇异方阵,那么X=BA-1矩阵左除:AX = B,求 XMATLAB 求解:X=AB最小二乘解矩阵右除:XA
15、 = B,求 XMATLAB求解:X=B/A最小二乘解注:假设A为非奇异方阵,那么A-1在Matlab中为inv(A)矩阵的次方运算矩阵的次方运算,可由“来达成,但矩阵必需是方阵,其次方运算才有意义 A = magic(3);B = A2例3:复数矩阵z,其“共轭转置矩阵(Conjugate Transpose)可表示成矩阵z 转置和共轭转置矩阵i = sqrt(-1);% 单位虚数单位虚数z = 1+i, 2; 3, 1+2i;w = z % 共轭转置共轭转置(注意注意z后面的单引号后面的单引号) 例4: 矩阵共轭转置i = sqrt(-1);% 单位虚数单位虚数z = 1+i, 2; 3,
16、 1+2i;w = z.% 单纯转置单纯转置(注意注意z后面的句点及单引号后面的句点及单引号)想得到任何矩阵z的转置Transpose,那么可表示成矩阵矩阵z.例5:矩阵的转置假设z为实数,那么z和z.的结果是一样的2、点运算矩阵对应元素的直接运算 例如A =1 2 3;4 5 6;7 8 0B = A.ABAC* .ijijijbac 087654321AAAB. 3MATLAB数组运算函数1. 规那么:设X=(xij)mn,那么 f (X)=(f (xij)mnsin cos tan cot sec csc asin acos atan acot asec acsc2. 常用数学函数三角与
17、反三角与反三角函数三角函数exp log log10 sqrt pow2ceil fix floor round rem signabs angle conj imag real指数与对数指数与对数复变函数复变函数取整函数取整函数cart2sph cart2pol pol2cart sph2pol 坐标转换坐标转换注:假设要对函数进行矩阵运算,方法为:funm(X,f)size(A) %矩阵的大小inv(A) %矩阵的逆det(A) %矩阵的行列式rank(A) %矩阵的秩rref(A) %矩阵列的极大无关组orth(A) %矩阵化为正交阵trace(A) %矩阵的迹chol(A) %三角分解
18、,A=L*LTlu(A) %A对称,A=L*U U,S,V=svd(A) %A=U*S*Vqr(A) %A=q*r(q正交阵正交阵,r三角阵三角阵norm(A,1|2|p|inf|fro) %矩阵的模cond(A) %矩阵的条件数eig(A) %A*x= *xV,D=eig(A) %A*V=V*Deig(A,B) %A*x= *B*xV,D=eig(A,B) %A*V=B*V*D例:设A=pascal(4),B=magic(4),并使用以下函数进行计算向量的p-norm一个向量a的p-norm可以定义为 11ip,aa/ppipp=2 时,此即为向量时,此即为向量 a 的长度,或称欧氏长度的长
19、度,或称欧氏长度Euclidean Length 欲求一向量的p-norm,可使用norm指令norm(x,p)a = 3 4;x = norm(a, 1) % x = 7y = norm(a, 2) % y = 5z = norm(a, inf) iia)norm(a,1ia)norm(a,imaxinf 注意: 矩阵A的p-norm可以定义如下:ppxpxAxAmax例9: normMatrixnorm 指令亦可用于计算矩阵的 p-normA = 1 2 3; 4 5 6; 7 8 9;norm(A, 2)Cholesky分解是将一个对称的正定矩阵分解为一个上三角矩阵和其转置的乘积。X=p
20、ascal(5)R=chol(X)C=R*RLU分解是将原正方 (square) 矩阵分解成一个上三角形矩阵或是排列(permuted) 的上三角形矩阵和一个 下三角形矩阵,这样的分解法又称为三角分解。命令格式为:L,U=lu(A)L,U,P=lu(A)例如:B=1 3 2; -2 -6 1; 2 5 7L,U=lu(B)L*UL,U,P=lu(B)P*L*UQR分解法是将矩阵分解成一个正规正交矩阵与上三角形矩阵,矩阵A不必为正方矩阵。 A=1 3 2 5; -2 -6 1 6; 2 5 7 2Q,R=qr(A)Q*QQ*R奇异值分解 (sigular value decomposition,
21、SVD) 是另一种正交矩阵分解法;SVD是最可靠的分解法,但是它比QR 分解法要花上近十倍的计算时间。U,S,V=svd(A),其中U和V代表二个相互正交矩阵,而S代表一对角矩阵。 和QR分解法相同者, 原矩阵A不必为正方矩阵。A=1,2;3,1S,V,D=svd(A)矩阵的比较运算, =, , 5aba=b关系运算符的用法:关系运算符的用法A=1 2 3; 4 5 6;7 8,0b=A5A(b)3、同维矩阵间比较;返回0-1矩阵2、矩阵与一数比较返回0-1矩阵例2:给出矩阵A中大与5的元素值例3: 接上例,设B=magic(3)B=magic(3);BAfind指令 : 可传回非零元素索引,
22、显示一维索引或下标 元素索引元素索引index=find(A5) 可以将关系运算符返回的0-1矩阵,来进行矩阵的索Indexing求出在A矩阵中,满足AijBij的元素 x = 0 1 2; 0 0 3 index = find(x) x(index) x(index)那么是非零元素所形成的向量那么是非零元素所形成的向量 要找出满足某条件的二维索引或下标2维索引idx1,idx2=find(x5) idx1和idx2分别是符合条件之矩阵元素的列索引(Row Index)及行索引(Column Index)例:如何找出介于7和11的元素?x = magic(5)x(find(7x&x11
23、) 【例2.4 】产生5阶随机方阵A,其元素为10,90区间的随机整数,然后判断A的元素是否能被3整除并取出这些元素。 (1) 生成5阶随机方阵A。A=fix(90-10+1)*rand(5)+10)(2) 判断A的元素是否可以被3整除。P=rem(A,3)=0(3) 取出A中能被3整除的元素。A1=A(P)矩阵的逻辑运算矩阵的逻辑运算MATLAB提供了4种逻辑运算符:逻辑变量&(与)、|(或)、(非)和xor。对 double 变量来说,非 0 表示逻辑 1设A与B为两个命题逻辑运算相应元素间的运算n与运算n或运算n非运算n异或运算 A&BA|BAXor(A,B)数值为1那么
24、为True,数值为0那么为False当所有向量元素为真(非零),那么all指令传回1,否那么为0。当任一向量元素为真(非零),那么any指令传回1,否那么为0。 相关的指令有all及any:a = 0 1 2 3 result1 = all(a)retult2 = any(a)result3 = any(a0) 范例all 及 any 指令也可以接受矩阵输入,此时他们会对每一个行向量进行运算 【例】在0,3区间,求y=sin(x)的值:要求消去负半波方法方法1:x=0:pi/100:3*pi; y=sin(x);y1=(x2*pi).*y; %消去负半波消去负半波q=(xpi/3&x7
25、*pi/3&x=0).*y; %消去负半波消去负半波p=sin(pi/3);y2=(y=p)*p+(y=a&t=a&t=z)转置: 无论是中文或英文,每一个字符都会占用两个字节(2Bytes),故字符串变量t总共由35个字符构成,占用的内存总计为70个字节(70bytes) 字符的储存 whos 指令: 检视字符串变量t所占用储存空间(whos变量) MATLAB 是以两个字节来储存一个字符,所以也可以支持中文码,而且中文的ASCII内码都会大于数字128 由于 MATLAB 将字符串以其相对应之 ASCII 内码即数字形式储存成一列向量,故假设对此字符串直接进行数值运
26、算,MATLAB 会先将此字符串转成数值,再进行一般数值向量的运算 z=安徽工业大学安徽工业大学 whos zz=z+1char(z) eval 指令: 直接“执行某一特定字符串,其效果就如同直接在 MATLAB 指令窗口内输入此一特定字符串 eval 指令特别适用于在for-loop内自动产生有规律的变量名称,例如:clear all % 去除所有变量去除所有变量for i = 3:6eval( x,int2str(i),. =magic(,int2str(i),);); end whos x* x3,x4,x5,x6 都是在for-loop中产生的变量,分别代表维度为33、44、55、66
27、的魔方阵 class 或 ischar 指令: 判断某一个变量是否为字符串 chinese=今日事,今日毕今日事,今日毕out1=class(chinese)%out1的值是的值是“char,代表,代表chinese是字符串变是字符串变量量x = chinese+1;out2 = ischar(x) %out2的值是的值是0,代表,代表x不是一个字符串变量不是一个字符串变量 第一种方法是使用二维字符数组Two Dimensional Character Arrays必须先确认每个字符串即每一行的长度一样,否那么就必须在短字符串结尾补上空格符departments=ee ;cs ;econ %注
28、意空格符的使用 departments=char(ee,cs,econ) %注意注意“()及及“,的使用的使用 从二维字符数组抽取出字符串时,切记要使用 deblank 指令来移除尾部的空格符 departments = char(ee,cs,econ) dept1 = departments(1,:) % (1,:)代表第一行的元素代表第一行的元素 dept2 = deblank(dept1) % 使用使用 deblank 指令来移除尾部的空格符指令来移除尾部的空格符 len1 = length(dept1) % 显示变量显示变量 dept1 的长度的长度=4 len2 = length(dept2) % 显示变量显示变量 dept2 的长度的长度=2 str1 = today; str2 = tomorrow; str3 = today; out1 = strcmp(str1, str2) % 比较两字符串比较两字符串 str1 和和 str2 = 0out2 = strcmp(str1, str3) % 比较两字符串比较两字符串 str1 和和 str3 = 1 strcmp(s1,s2): 比较串比较串s1和和s2,相等返回相等返回1,否那么为否那么为0strncmp(s1,s2): 用于比较用于比较s1,s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 区域分布式能源系统能效优化及供需协同柔性调节策略研究
- 广西壮族自治区自然资源厅事业单位真题2024
- 2024年滨州阳信县流坡坞镇乡村公益性岗位招聘真题
- 厦门海洋职业技术学院《大学英语听说4》2023-2024学年第二学期期末试卷
- 长春信息技术职业学院《医学检验进展(二)》2023-2024学年第二学期期末试卷
- 哈尔滨广厦学院《中学数学课程资源开发》2023-2024学年第二学期期末试卷
- 湘南学院《资源加工工程设计》2023-2024学年第二学期期末试卷
- 重庆工业职业技术学院《热工与流体力学基础》2023-2024学年第二学期期末试卷
- 腹内压监测与管理
- 工业互联网平台建设及发展策略研究
- 南京市江宁区某地铁站岩土勘察报告
- 公职律师培训有感-培训心得体会
- GB/T 16758-2008排风罩的分类及技术条件
- GB 15612-1995食品添加剂蒸馏单硬脂酸甘油酯
- 广东省著名旅游景点课件
- 洗煤厂培训教程
- 郴州云湘矿冶有限责任公司10000ta锡精炼智能化升级技改项目报告书
- GB∕T 31564-2015 热喷涂 热喷涂沉积效率的测定
- 施工管理人员年度安全培训考核记录表格
- 小型农田水利灌溉工程施工组织设计(word共114页)
- 通信电源施工方案
评论
0/150
提交评论