MATLAB全部实验及答案实验一、MATLAB基本操作实验内容及步骤4、有关向量、矩阵或数组的一些运算(1)设A=15;B=20;求C=A+B与c=a+b?(2)设A=[1 2 3;4 5 6;7 8 9],B=[9 8 7;6 5 4;3 2 1];求A*B与A.*B?A*B就是线代里面的矩阵相乘 A.*B是对应位置的元素相乘(3)设a=10,b=20;求i=a/b=0.5与j=a\b=2?(4)设a=[1 -2 3;4 5 -4;5 -6 7]请设计出程序,分别找出小于0的矩阵元素及其位置(单下标、全下标的形式),并将其单下标转换成全下标。
clear,clca=[1 -2 3;4 5 -4;5 -6 7];[x,y]=find(a<0);c=[];for i=1:length(x)c(i,1)=a(x(i),y(i));c(i,2)=x(i);c(i,3)=y(i);c(i,4)=(y(i)-1)*size(a,2)+x(i);endc(5)在MATLAB命令行窗口运行A=[1,2;3,4]+i*[5,6;7,8];看结果如何?如果改成运行A=[1,2;3,4]+i[5,6;7,8],结果又如何?前面那个是虚数矩阵,后面那个出错(6)请写出完成下列计算的指令:a=[1 2 3;3 4 2;5 2 3],求a^2=?,a.^2=?a^2= 22 16 1625 26 2326 24 28a.^2=1 4 99 16 425 4 9(7)有一段指令如下,请思考并说明运行结果及其原因clearX=[1 2;8 9;3 6];X( : ) 转化为列向量(8)使用三元组方法,创建下列稀疏矩阵2 0 8 00 0 0 10 4 0 06 0 0 0方法一:clear,clcdata=[2 8 1 4 6];ir=[1 1 2 3 4 ];jc=[1 3 4 2 1];s=sparse(ir,jc,data,4,4);full(s)方法二:不用三元组法clear,clca=zeros(4,4);a(1,[1,3])=[2,8];a(2,4)=1;a(3,2)=4;a(4,1)=6;a(9) 写出下列指令的运行结果>> A = [ 1 2 3 ]; B = [ 4 5 6 ];>> C = 3.^A>> D = A.^B5、 已知⎪⎭⎫⎝⎛+⋅=-334sin 234πt e y t 若需要计算t ∈[-1,1],取间隔为0.01,试计算出相对应的y 值。
用步长为0.01的for 循环 搞定实验二、MATLAB 运算基础实验内容及步骤(一)2、设有矩阵A和B,A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 1819 20;21 22 23 24 25],B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11](1)求它们的乘积C(2)将矩阵C的右下角3x2子矩阵赋给D解:A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 2223 24 25];B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11];c=A*BD=c([3:5],[2:3])D=c([3,4,5],[2,3])3、已知A=[23 10 -78 0;41 -45 65 5;32 5 0 32;6 -54 9214],取出其前3行构成矩阵B,其前两列构成矩阵C,其左下角3x2子矩阵构成矩阵D,B与C的乘积构成矩阵E,分别求E<D、E&D、E|D、~E|~D。
解:A=[23 10 -78 0;41 -45 65 5;32 5 0 32;6 -5492 14];B=A([1:3],:)c=A(:,[1,2])D=A([2:4],[1,2])E=B*cE<D,E&D,E|D,~E|~D4、使用函数,实现矩阵左旋90°或右旋90°的功能解:A=[23 10 -78 0;41 -45 65 5;32 5 0 32;6 -54 92 14] rot90(A)rot90(A,3)5、求S=20+21+22+23+24+……+210的值(提示:利用求和函数与累乘积函数。
)解:a=2*ones(1,10)b=cumprod(a)c=sum(b)+1aa=2*ones(1,11)aa(1)=1bb=cumprod(aa)cc=sum(bb)(二)1、求[100,999]之间能被61整除的数及其个数(提示:先利用冒号表达式,再利用find和length函数。
)2、建立一个字符串向量,删除其中的大写字母(提示:利用find函数和空矩阵。
)解:1)clear,clc 2)clear,clct=[100:999]; b=['asSldSjfkSlGjFhslFf']i=find(rem(t,61)==0); d=find(b<='Z'&b>='A');t(i) b(d)=[]d=size(i,1)*size(i,2)3、写出使以下这段文字成为字符串的MATLAB指令。
注意保持这段文字的格式:在英式用法中,引号通常是单引号,如'Fire!'。
In GB usage quotation marks are usually single: 'fire!'.解:a=['在英式用法中,引号通常是单引号,如''Fire!''。
' ];b=['In GB usage quotation marks are usually single: ''fire!''. ' ];c=strvcat(a,b)4、用结构体数组来存储2名学生的基本情况数据,每名学生的数据包括学号、姓名、专业和2门课程的成绩。
解:clear,clcxuesheng=struct('num',{222,22},'name',{'mike','hike'},'major','te le','score',{rand(2,1)*100,rand(2,1)*100})xuesheng.score5、建立矩阵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?2)分别执行A(3)=[]和A{3}=[]后,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};A{1,2}=upper(A{1,2})A{3}=[]A(3)=[]6、利用MATLAB提供的rand函数和圆整函数随机生成4X3整数矩阵A,进行如下操作1)A各列元素的平均值和中值2)A的最大元素和最小元素及它们的位置3)求A的每行元素的和以及全部元素之和4)分别对A的每列元素按升序、每行元素按降序排列解:A=round(rand(4,3))A_mean=mean(A)A_median=median(A)A_max=max(max(A))A_min=min(min(A))[x,y]=find(A==A_max)[xx,yy]=find(A==A_min)A_maxlocal=[x(1) y(1)]A_minlocal=[xx(1) yy(1)]A_rsum=sum(A,2)A_sum=sum(sum(A))A_csort=sort(A)A_rsort=abs(sort(-A,2))实验四 MATLAB循环结构程序设计实验内容及步骤1、分别使用for循环语句和while循环语句找出最小的n值,使得n!>10100,并求出n!。
要求显示的结果为n=70n!=1.197857e+100>1e100或70!=1.197857e+100>1e100用IF语句执行如下:s=1;for n=1:100s=s*n;if(s>10^100)break;endendstr1=['n=',num2str(n)];str2=['n!=',num2str(s)];disp(str1)disp(str2)用WHILE语句执行如下:n=1;s=1;while(s<=10^100)s=s*n;n=n+1;endstr1=['n=',num2str(n-1)];str2=['n!=',num2str(s)];disp(str1)disp(str2)2、已知 f1=1,n=1f2=0,n=2f3=1,n=3f n=f n-1-2f n-2+f n-3,n>3求f1 ~ f50中:1)最大值和最小值及它们的位置,各数之和(最大值给变量MAX,其位置给变量x,最小值给变量MIN,其位置给变量y,各数之和给变量SUM)。
2)正数、零、负数的个数(依次赋值给变量positive,zero,negative)。
法一: clear;f(1)=1;f(2)=0;f(3)=1;for n=4:50f(n)=f(n-1)-2*f(n-2)+f(n-3);end[MAX,x]=max(f) %注意不要分号,要执行的语句[MIN,y]=min(f)SUM=sum(f)positive=length(find(f>0))zero=length(find(f==0))negative=length(find(f<0))MAX =406631x =49MIN =-403795y =50SUM =76861positive =25zero =2negative =23法二:clear all,clcfor n=1:50if n==1f(1)=1;elseif n==2f(2)=0;elseif n==3f(3)=1;elseif n>3f(n)=f(n-1)-2*f(n-2)+f(n-3);endend[MAX,y]=max(f)[Min,x]=min(f)positive=length(find(f>0))zero=length(find(f==0))negative= length(find(f<0))3、Fibonacci数组的元素满足Fibonacci规则:a k+2=a k+a k+1,(k=1,2,3,…);且a1= a2=1。