您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > MATLAB全部实验及答案
MATLAB全部实验及答案实验一、MATLAB基本操作实验内容及步骤4、有关向量、矩阵或数组的一些运算(1)设A=15;B=20;求C=A+B与c=a+b?(2)设A=[123;456;789],B=[987;654;321];求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-23;45-4;5-67]请设计出程序,分别找出小于0的矩阵元素及其位置(单下标、全下标的形式),并将其单下标转换成全下标。clear,clca=[1-23;45-4;5-67];[x,y]=find(a0);c=[];fori=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=[123;342;523],求a^2=?,a.^2=?a^2=221616252623262428a.^2=14991642549(7)有一段指令如下,请思考并说明运行结果及其原因clearX=[12;89;36];X(:)转化为列向量(8)使用三元组方法,创建下列稀疏矩阵2080000104006000方法一:clear,clcdata=[28146];ir=[11234];jc=[13421];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=[123];B=[456];C=3.^AD=A.^B5、已知334sin234teyt若需要计算t∈[-1,1],取间隔为0.01,试计算出相对应的y值。用步长为0.01的for循环搞定实验二、MATLAB运算基础实验内容及步骤(一)2、设有矩阵A和B,A=[12345;678910;1112131415;1617181920;2122232425],B=[3016;17-69;023-4;970;41311](1)求它们的乘积C(2)将矩阵C的右下角3x2子矩阵赋给D解:A=[12345;678910;1112131415;1617181920;2122232425];B=[3016;17-69;023-4;970;41311];c=A*BD=c([3:5],[2:3])D=c([3,4,5],[2,3])3、已知A=[2310-780;41-45655;325032;6-549214],取出其前3行构成矩阵B,其前两列构成矩阵C,其左下角3x2子矩阵构成矩阵D,B与C的乘积构成矩阵E,分别求ED、E&D、E|D、~E|~D。解:A=[2310-780;41-45655;325032;6-549214];B=A([1:3],:)c=A(:,[1,2])D=A([2:4],[1,2])E=B*cED,E&D,E|D,~E|~D4、使用函数,实现矩阵左旋90°或右旋90°的功能解:A=[2310-780;41-45655;325032;6-549214]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,clc2)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!'。InGBusagequotationmarksareusuallysingle:'fire!'.解:a=['在英式用法中,引号通常是单引号,如''Fire!''。'];b=['InGBusagequotationmarksareusuallysingle:''fire!''.'];c=strvcat(a,b)4、用结构体数组来存储2名学生的基本情况数据,每名学生的数据包括学号、姓名、专业和2门课程的成绩。解:clear,clcxuesheng=struct('num',{222,22},'name',{'mike','hike'},'major','tele','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+1001e100或70!=1.197857e+1001e100用IF语句执行如下:s=1;forn=1:100s=s*n;if(s10^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=3fn=fn-1-2fn-2+fn-3,n3求f1~f50中:1)最大值和最小值及它们的位置,各数之和(最大值给变量MAX,其位置给变量x,最小值给变量MIN,其位置给变量y,各数之和给变量SUM)。2)正数、零、负数的个数(依次赋值给变量positive,zero,negative)。法一:clear;f(1)=1;f(2)=0;f(3)=1;forn=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(f0))zero=length(find(f==0))negative=length(find(f0))MAX=406631x=49MIN=-403795y=50SUM=76861positive=25zero=2negative=23法二:clearall,clcforn=1:50ifn==1f(1)=1;elseifn==2f(2)=0;elseifn==3f(3)=1;elseifn3f(n)=f(n-1)-2*f(n-2)+f(n-3);endend[MAX,y]=max(f)[Min,x]=min(f)positive=length(find(f0))zero=length(find(f==0))negative=length(find(f0))3、Fibonacci数组的元素满足Fibonacci规则:ak+2=ak+ak+1,(k=1,2,3,…);且a1=a2=1。请设计一段程序,求出该数组中第一个大于10000的元素要求显示的结果为:i=21a(i)=10946或者a(21)=10946法一:a(1)=1;a(2)=1;fork=1:10000%不能是3:10000a(k+2)=a(k)+a(k+1);ifa(k)10000break;endenddisp(['k=',num2str(k)])disp(['a(k)=',num2str(a(k))])法二:clear,clcs=1;forn=1:infs=s*n;ifs10^100breakendendfprintf('%d!=%1.6e1e100\n',n,s)实验五、MATLAB选择结构程序设计实验内容及步骤1、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80分~89分为B,70分~79为C,60分~69分为D,60分以下为E。要求:1)分别用if语句和switch语句实现2)对不合理的成绩应输出出错信息“输入的成绩不合理”(若成绩出现小数,则只能是“.5”)解:score=input('请输入您的分数:');ifrem(score,0.5)==0switchscorecasenum2cell(90:0.5:100)disp('您的成绩等级为A')casenum2cell(80:0.5:89)disp('您的成绩等级为B')casenum2cell(70:0.5:79)disp('您的成绩等级为C')casenum2cell(60:0.5:69)disp('您的成绩等级为D')casenum2cell(0:0.5:59.5)disp('您的成绩等级为E')otherwisedisp('你输入的成绩不合理')endelsedisp('你输入的成绩不合理,若出现小数只能是0.5')end2、设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。(sy312.m)解:a=input('请输入一个数:');b=input('请再输入一个数:');fuhao=input('请输入一个运算符号(+-*/):','s');switchfuhaocase{'+'}he=a+b;disp(['输入的两数和=',num2
本文标题:MATLAB全部实验及答案
链接地址:https://www.777doc.com/doc-2887162 .html