当前位置:文档之家› MATLAB实验:运算基础,并且附有答案

MATLAB实验:运算基础,并且附有答案

实验二、MATLAB运算基础一、实验目的掌握MATLAB各种表达式的书写规则及常用函数的使用。

掌握MATLAB中字符串、元胞数组和结构的常用函数的使用。

二、实验内容及步骤1、设有矩阵A和B,A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 1718 19 20;21 22 23 24 25],B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 1311]1)求它们的乘积C >>C=A*B2)将矩阵C的右下角3x2子矩阵赋给D >>I=[3 4 5];J=[2 3];D=C(I,J)也可以用>>D=C([3 4 5],[2 3])D =520 397705 557890 7172、完成下列操作1)求[100,999]之间能被61整除的数及其个数(提示:先利用冒号表达式,再利用find和length函数。

)>> a=100:999;find(rem(a,61)==0)ans =23 84 145 206 267 328 389 450 511572 633 694 755 816 877>> b=a(ans)b =122 183 244 305 366 427 488 549 610 671 732 793 854 915 976>> length(b)ans =152)建立一个字符串向量,删除其中的大写字母(提示:利用find函数和空矩阵。

)a=’I am maying’;a( find(a>’A’&a<’Z’))=[]3、已知A=[23 10 -78 0;41 -45 65 5;32 5 0 32;6 -54 92 14],取出其前3行构成矩阵B,其前两列构成矩阵C,其左下角3x2子矩阵构成矩阵D,B与C的乘积构成矩阵E,分别求E<D、E&D、E|D、~E|~D。

>>B=A([1 2 3 ],:)>> C=A(:,[1 2])>> D=A([2 3 4 ],[12 ])>> E=B*C>> E<Dans =1 10 00 1 >> E&Dans =1 11 11 1 >> E|Dans =1 11 11 1 >> ~E|~D ans =0 00 00 04、使用函数,实现矩阵左旋90°或右旋90°的功能>>rot90(A,1)代表左旋90度5、写出使以下这段文字成为字符串的MA TLAB指令。

注意保持这段文字的格式:在英式用法中,引号通常是单引号,如'Fire!'。

In GB usage quotation marks are usually single: 'fire!'.>> a='在英式用法中,引号通常是单引号,如''Fire!''。

'a =在英式用法中,引号通常是单引号,如'Fire!'。

>> b='In GB usage quotation marks are usually single: ''fire!''. 'b =In GB usage quotation marks are usually single: 'fire!'.>>strvcat(a,b) %strvcat代表垂直拼接ans =在英式用法中,引号通常是单引号,如'Fire!'。

In GB usage quotation marks are usually single: 'fire!'6. 用结构体数组来存储2名学生的基本情况数据,每名学生的数据包括学号、姓名、专业和2门课程的成绩。

>> student=struct('xuehao',{000,001},'xingming',{'deni ','sherry'},'zhuanye',{'math','english'},'chengji',{'math:87,english:9 0','math:86,english:92'})student =1x2 struct array with fields:xuehaoxingmingzhuanyechengji>> student(1)ans =xuehao: 0xingming: 'deni 'zhuanye: 'math'chengji: 'math:87,english:90'>> student(2)ans =xuehao: 1xingming: 'sherry'zhuanye: 'english'chengji: 'math:86,english:92'7求S=20+21+22+23+24+……+210的值(提示:利用求和函数与累乘积函数。

)方法一>> a=[1 2 2 2 2 2 2 2 2 2 2];c=cumprod(a)c =1 2 4 8 1632 64 128 256 512 1024 >> sum(c)ans =2047方法二>> a=0:10;>> b=2.^ab =Columns 1 through 91 2 4 8 16 32 64 128 256Columns 10 through 11512 1024>> c=sum(b)c =20478建立矩阵A并回答有关问题A{1,1}=1;A{1,2}='Brenden';A{2,1}=reshape(1:9,3,3);A{2,2}={12,34,2;54,21,3;4,23,67};1)使用访问的方式如何将Brenden改写成BRENDEN?>>A{1,1}=1;A{1,2}='Brenden';A{2,1}=reshape(1:9,3,3);A{2, 2}={12,34,2;54,21,3;4,23,67}A =[ 1] 'Brenden'[3x3 double] {3x3 cell}>> upper(A{1,2}) 用{}来访问元胞的内容ans =BRENDEN2)分别执行A(3)=[]和A{3}=[]后,A的值各是多少?并说明原因。

>> A(3)=[]A =[1] [3x3 double] {3x3 cell}>>A{1,1}=1;A{1,2}='Brenden';A{2,1}=reshape(1:9,3,3);A{2,2}={12,34,2;54,21,3;4,23,67}A =[ 1] 'Brenden'[3x3 double] {3x3 cell}>> A{3}=[]A =[ 1] [][3x3 double] {3x3 cell}原因:用()是访问元胞数组内的元胞,而用{}是访问元胞数组内的元胞内容。

9利用MATLAB提供的rand函数和圆整函数随机生成4X3整数矩阵A,进行如下操作1)A各列元素的平均值和中值>> A=round(rand(4,3)*10)A =9 9 17 9 42 4 84 9 0>> mean(A)ans =5.5000 7.7500 3.2500>> median(A)ans =5.5000 9.0000 2.50002)A的最大元素和最小元素及它们的位置>> A=round(rand(4,3)*10)A =5 8 39 7 58 3 76 3 3>> x=max(A(:))x =9>> find(A==x) %找最大值的位置ans =23)求A的每行元素的和以及全部元素之和>>sum(A,2);sum(A(:))4)分别对A的每列元素按升序、每行元素按降序排列>>sort(A); sort默认升序>>dim=2;sort(A,dim,'descend')或者直接用sort(A,2,’descend’)10、思考:已知元胞数组CC(:,:,1) ='way' 'sherry'[ 1] [ 2]C(:,:,2) ='deni' 'joe'[ 3] [ 4]和元胞数组fields={'name','id'}问: >>S1=cell2struct(C,fields,1)>>S2=cell2struct(C,fields,2)>>S3=cell2struct(C,fields,3)三条指令中,请说明转换正确的是哪些指令?。

相关主题