本科实验报告课程名称:Matlab电子信息应用实验项目:矩阵和数组的操作实验地点:电机馆跨越机房专业班级:学号:学生姓名:指导教师:2014年3月26 日一、实验目的1.掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。
2.学习矩阵和数组的加减运算与乘法。
3.掌握对数组中元素的寻访与赋值,会对数组进行一般的操作。
二、预备知识1.常用的产生特殊矩阵的函数•eye(m,n) 单位阵•rand(m,n) 随机矩阵•randn(m,n) 正态分布的随机矩阵•zeros(m,n) 零矩阵•ones(m,n) 全部元素都为1的矩阵•compan(A) 矩阵A的伴随矩阵•bankel(m,n) n维Hankel矩阵•invhilb(n) n维逆Hilbert矩阵•magic(n) n维Magic矩阵•toeplitz(m,n) Toeplitz矩阵•wilkinson(n) n维Wilkinson特征值测试矩阵•handamard(n) n维Handamard矩阵•hilb(n) n维Hilbert矩阵•kron(A,B) Kronecker张量积•pascal(n) n维Pascal矩阵•vander(A) 由矩阵A产生Vandermonde矩阵2.通过矩阵的结构变换,获得新矩阵表2 矩阵结构变化产生新矩阵L=tril(A) L主对角线及以下元素取矩阵A 的元素,其余为0L=tril(A,k) L及第k条对角线及以下元素取矩阵A的元素,其余为U=triu(A) U主对角线及以上的元素取矩阵A的元素,其余为0U=triu(A,k) U第k条对角线及以上的元素取矩阵A的元素,其余为B=rot90(A) 矩阵A逆时针旋转90°得到B B=rot90(A,k) 矩阵A逆时针旋转k*90°得到B B=fliplr(A) 矩阵A左右翻转得到BB=flipud(A) 矩阵A上下翻转得到BB=reshape(A,m, n)将矩阵A的元素重新排列,得到m*n的新矩阵(m*n 就等于A的行列式之积。
若A为3*4,则m,n可为2,6或4,3等3.数组(矩阵)操作对数组或矩阵的基本操作有插入、重新排列、提取、按列拉长、置空(去掉某行或某列)、置零、用单信下标操作一个矩阵,用逻辑数组操作一个矩阵、按指定条件求子数组,求数组的规模等.①插入通过对x进行插入运算创建矩阵A②重新排列以逆序重排A的各行形成矩阵B③提取提取A的前两行的后两列形成矩阵C④按列拉长对C按列拉长形成矩阵D⑤置空删除B的第2 列⑥置零将矩阵B的第2行第2列的元素置为1⑦用单个下标操作一个矩阵MATLAB对矩阵中的元素赋予一个序号,序号值按列从第1列第1行到第1列第2行到第2列第1行到第2列第2行,直至最后一列最后一行的顺序计数。
⑧用逻辑数组操作一个矩阵⑨按指定条件求子数组首先由条件表达式生成一个逻辑数组,然后使用系统提供的函数即可,函数在已知数组中按逻辑数组的元素值查找所需的元素下标。
三、实验内容与步骤1.用三种方法创建一个3×3矩阵,然后利用矩阵编辑器,将其扩充为4×5矩阵,并保存,试着调用它。
⑴直接输入法⑵直接利用MATLAB提供的函数创建一个3×3矩阵⑶利用MATLAB提供的“Matrix Editor”完成输入步骤1 在命令区输入A=1。
步骤2 用鼠标单击工具栏的工作区浏览器,MATLAB弹出变量浏览器,选中变量A,鼠标左键双击A,打开矩阵编辑器。
步骤3 在左下脚的两个文本框中分别输入希望得到的矩阵的行数和列数:3行3列,即得到一个3×3矩阵。
步骤4 要将上面矩阵改为一个4×5矩阵,只需改变矩阵的行数和列数即可。
如将3行3列改为4行5列,即可得到一个4×5矩阵。
若想修改其中的元素,只需用鼠标选中表格中我们想要修改的元素,将原来的元素修改为我需要的值。
步骤5 要命令区输入save data A(data为我们给变量文件起的名称,系统会自动沿设定好的路径以“.mat”格式存储文件),即可保存上面例子中创建的矩阵A。
步骤6 在命令区输入load data即可把保存在文件中的矩阵读到MATLAB的工作区的内存中来。
2.建立一个等差数列,然后由它产生一个对角阵。
步骤1 在命令区输入a=linspace(0,1.5,5)产生一个等差数列。
步骤2 在命令区输入B=diag(a)产生一个对角阵。
3.利用MATLAB的函数inv(A)求方阵A的逆矩阵。
步骤1 在命令区输入A=[1,2;5,6]得到一个2×2的方阵。
步骤2 再输入B=inv(A)求出A 的逆矩阵。
四、练习1.创建一个5×5矩阵,提取主对角线以上的部分。
>> A=magic(5)A =17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9>> triu(A)ans =17 24 1 8 150 5 7 14 160 0 13 20 220 0 0 21 30 0 0 0 92.A=rand(3),B=magic(3),C=rand(3,4),计算A×B×C>> A=rand(3);B=magic(3);C=rand(3,4);A*B*Cans =17.3808 17.3271 20.6044 11.737411.1003 9.1717 13.4321 6.667620.3142 20.2013 25.0142 15.44653.创建一个3×3矩阵,并求其转置,逆矩阵。
>> A=magic(3),A',inv(A)A =8 1 63 5 74 9 2ans =8 3 41 5 96 7 2ans =0.1472 -0.1444 0.0639-0.0611 0.0222 0.1056-0.0194 0.1889 -0.10284.用两种方法求Ax=b的解(A为4阶随机矩阵,b为4阶列向量)。
>> A=rand(4),b=[1;2;3;4],x1=A\b,x2=inv(A)*bA =0.5252 0.0196 0.5028 0.18970.2026 0.6813 0.7095 0.1934 0.6721 0.3795 0.4289 0.68220.8381 0.8318 0.3046 0.3028b =1234x1 =1.86872.6108-0.63091.5008x2 =1.86872.6108-0.63091.5008A。
5.创建一个4阶随机矩阵A,计算3>> A=rand(4),A^3A =0.3529 0.2028 0.1988 0.9318 0.8132 0.1987 0.0153 0.4660 0.0099 0.6038 0.7468 0.4186 0.1389 0.2722 0.4451 0.8462 ans =0.7294 0.9186 1.1428 1.9807 0.6355 0.7438 0.9505 1.8563 0.8965 0.9666 1.1120 1.96830.7794 0.9577 1.1558 1.92716.求100-999之间能被21整除的数的个数。
>> A=100:999;>> B=find(rem(A,21)==0);>> C=length(B)C =437. 设有矩阵A 和B⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=25242322212019181716151413121110987654321A ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡--=11134079423096171603B [1] 求它们的乘积C=A×B。
>> x=[11,12,13,14,15];>>A=[x-10;x-5;11,12,13,14,15;x+5;x+10];B=[3,0,16;17,-6,9;0,23,-4;9,7,0;4,13,11];>> C=A*BC =93 150 77258 335 237423 520 397588 705 557753 890 717[2] 将矩阵C 的右下角3×2子矩阵赋给D 。
>> D=C(3:5,2:3)D =520 397705 557890 7178. 求解下列方程组[1] 0523=+-x x>> solve('x^3-2*x+5=0','x')ans =-1/6*(540+12*1929^(1/2))^(1/3)-4/(540+12*1929^(1/2))^(1/3)1/12*(540+12*1929^(1/2))^(1/3)+2/(540+12*1929^(1/2))^(1/3)+1/2*i*3^(1/2)*(-1/6*(540+12*1929^(1/2))^(1/3)+4/(540+12*1929^(1/2))^(1/3))1/12*(540+12*1929^(1/2))^(1/3)+2/(540+12*1929^(1/2))^(1/3)-1/2*i*3^(1/2)*(-1/6*(540+12*1929^(1/2))^(1/3)+4/(540+12*1929^(1/2))^(1/3)) [2] ⎪⎩⎪⎨⎧=+--=-+=-+34282113321321321x x x x x x x x x>> A=[3,11,-2;1,1,-2;1,-1,1];B=[8;-4;3];x=A\Bx =1139. 求微分方程02)(2)(=+'+''y t y t y 当y(0)=0、1)0(='y 时的解。
>> dsolve('D2y+2Dy+2y=0','y(0)=0,Dy(0)=1')ans =-2*t^2+t五、实验分析从这次的练习可以看出matlab 基本可以解决全部常见的数学运算问题,并且计算的速度非常快,使用简便,通过调用函数就可以解决相应的问题十分的方便。
六、实验总结这次练习主要是对矩阵和数组进行操作,体现出了matlab 的优越性。
通过这次练习,我学会了利用matlab 解方程组,以及一些快速创建矩阵的方法,为后续的学习打下了基础。