MATLAB全部实验及答案
更新时间:2023-03-11 19:39:01 阅读量: 教育文库 文档下载
- matlab全部清除命令推荐度:
- 相关推荐
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,clc
a=[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); end c
(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 16 25 26 23
26 24 28
a.^2=
1 4 9 9 16 4 25 4 9
(7) 有一段指令如下,请思考并说明运行结果及其原因
clear
X=[1 2;8 9;3 6]; X( : ) 转化为列向量
(8) 使用三元组方法,创建下列稀疏矩阵
2 0 8 0 0 0 0 1 0 4 0 0 6 0 0 0 方法一: clear,clc
data=[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,clc a=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.^B 5、 已知y?3?4t???2?esin??43t?3??若需要计算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 18
19 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 22 23 24 25];
B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11]; c=A*B
D=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 92
14],取出其前3行构成矩阵B,其前两列构成矩阵C,其左下角3x2子矩阵构成矩阵D,B与C的乘积构成矩阵E,分别求E 解: A=[23 10 -78 0;41 -45 65 5;32 5 0 32;6 -54 92 14]; B=A([1:3],:) c=A(:,[1,2]) D=A([2:4],[1,2]) E=B*c E 4、 使用函数,实现矩阵左旋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)+1 aa=2*ones(1,11) aa(1)=1 bb=cumprod(aa) cc=sum(bb) (二) 1、求[100,999]之间能被61整除的数及其个数(提示:先利用冒号表达式,再利用find和length函数。) 2、建立一个字符串向量,删除其中的大写字母(提示:利用find函数和空矩阵。) 解:1)clear,clc 2)clear,clc t=[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,clc xuesheng=struct('num',{222,22},'name',{'mike','hike'},'major','tele','score',{rand(2,1)*100,rand(2,1)*100}) xuesheng.score 5、 建立矩阵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=70 n!=1.197857e+100>1e100 或 70!=1.197857e+100>1e100 用IF语句执行如下: s=1; for n=1:100 s=s*n; if(s>10^100) break; end end str1=['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; end str1=['n=',num2str(n-1)]; str2=['n!=',num2str(s)]; disp(str1) disp(str2) 2、 已知 f1=1,n=1 f2=0,n=2 f3=1,n=3 fn=fn-1-2fn-2+fn-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:50 f(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 = 406631 x = 49 MIN = -403795 y = 50 SUM = 76861 positive = 25 zero = 2 negative = 23 法二:clear all,clc for n=1:50 if n==1 f(1)=1; elseif n==2 f(2)=0; elseif n==3 f(3)=1; elseif n>3 f(n)=f(n-1)-2*f(n-2)+f(n-3); end end [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规则: ak+2=ak+ak+1,(k=1,2,3,?);且a1= a2=1。 请设计一段程序,求出该数组中第一个大于10000的元素 要求显示的结果为: i=21 a(i)=10946 或者 a(21)=10946 法一:a(1)=1; a(2)=1; for k=1:10000 %不能是3:10000 a(k+2)=a(k)+a(k+1); if a(k)>10000 break; end end disp(['k=',num2str(k)]) disp(['a(k)=',num2str(a(k))]) 法二:clear,clc s=1; for n=1:inf s=s*n; if s>10^100 break end end fprintf('%d!=%1.6e>1e100\\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('请输入您的分数:'); if rem(score,0.5)==0 switch score case num2cell(90:0.5:100) disp('您的成绩等级为 A') case num2cell(80:0.5:89) disp('您的成绩等级为 B') case num2cell(70:0.5:79) disp('您的成绩等级为 C') case num2cell(60:0.5:69) disp('您的成绩等级为 D') case num2cell(0:0.5:59.5) disp('您的成绩等级为 E') otherwise disp('你输入的成绩不合理') end else disp('你输入的成绩不合理,若出现小数只能是0.5') end 2、 设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位 随机整数,再输入一个运算符号,做相应的运算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。(sy312.m) 解:a=input('请输入一个数:'); b=input('请再输入一个数:'); fuhao=input('请输入一个运算符号(+ - * /):','s'); switch fuhao case {'+'} he=a+b; disp([' 输 入 的 两 数 和 =',num2str(a),'+',num2str(b),'=',num2str(he)]) case {'-'} he=a-b; disp([' 输 入 的 两 数 差 =',num2str(a),'-',num2str(b),'=',num2str(he)]) case {'*'} he=a*b; disp([' 输 入 的 两 数 乘 积 =',num2str(a),'*',num2str(b),'=',num2str(he)]) case {'/'} he=a/b; disp([' 输 入 的 两 数 商 =',num2str(a),'/',num2str(b),'=',num2str(he)]) otherwise disp('请输入正确的符号') end 3、 求下列分段函数的值 ??2???6,??0且 ??-3?y???2?5??6,0??<10,??2且 ??3 ??2???1,其他? 要求:用if语句实现,分别输出x = -5.0,-3.0,1.0,2.0,2.5, 3.0,5.0时的y值。其中x的值以向量的形式从键盘输入。(sy313.m) 解:x=[]; y=[]; x=input('请输入x的值:'); for k=1:length(x) if x(k)<0 & x(k)~=-3 y(k)=x(k).^2+x(k)-6; elseif x(k)>=0&x(k)<10&x(k)~=2&x(k)~=3 y(k)=x(k).^2-5*x(k)+6; else y(k)=x(k).^2-x(k)-1; end end for i=1:length(y) disp(['y(',num2str(x(i)),')','=',num2str(y(i))]); end 实验六 MATLAB函数文件程序设计 实验内容及步骤 1、 编写一个函数文件chengji.m,用于求两个矩阵的乘积和点乘,然后在命 令行窗口中调用该函数(提示:使用varargout函数) 要求:1)当两矩阵是尺寸相同的方阵时,返回它们的乘积和点乘。 2)当两矩阵不是尺寸相同的方阵时,则根据它们的尺寸,分别进行乘积或点乘 3)当两矩阵的尺寸不能满足乘积或点乘的要求时,则提示“这两个矩阵不能乘” 解:function varargout=chengji(a,b) [x,y]=size(a); [xx,yy]=size(b); if xx==yy&x==y&x==xx varargout{1}=a*b; varargout{2}=a.*b; elseif x==xx&y==yy varargout{1}=a.*b; disp('只能做点乘') varargout{2}=0; elseif x==yy&xx==y disp('可以做两种矩阵乘') varargout{1}=a*b; varargout{2}=b*a; elseif x==yy||xx==y try varargout{1}=a*b; disp('只能做矩阵乘') varargout{2}=0; catch varargout{1}=b*a; disp('只能做矩阵乘') varargout{2}=0; end else error('这两个矩阵不能乘') end 2、 编写一函数qiuhe.m,实现sum(A)的功能,其中A为矩阵。 解:function y=qiuhe(a) y=[]; [x,yy]=size(a); if x==1 s=0; for k=1:yy s=s+a(1,k); end y=s; else for j=1:yy s=0; for i=1:x s=s+a(i,j); end y(1,j)=s; end end 3、 编写一个阶乘函数jiecheng.m,然后在试验三的编程题“分别使用for 和while语句找出最小的n值,使得n!>10100,并求出n!”程序中调用该函数。 解:function s=jiecheng(n) s=1; if n==0 s=1; elseif n<0 error('n必须大于等于0') else for i=1:n s=s*i; end end 实验八 数据插值与曲线拟合实验 实验内容 1.已知原始数据x?0:1:4*pi,y?sin(x).*exp(?x/5),插值点为xi?0:0.3:4*pi,试用四种不同的插值方法进行插值,并在一副图中绘出四种插值曲线。 解:clear,clc x=0:1:4*pi; y=sin(x).*exp(-x/5); xi=0:0.3:4*pi; y1=interp1(x,y,xi,'nearset'); y2=interp1(x,y,xi,'linear'); y3=interp1(x,y,xi,'spline'); y4=interp1(x,y,xi,'cubic'); plot(x,y,'-m',xi,y1,'*r',xi,y2,'ok',xi,y3,'^b',xi,y4,'+g') legend('原始数据','最近点插值','线性插值','样条插值','立方插值') title('第一题 四种插值方法进行插值','FontName','隶书','FontSize',20) xlabel('X轴','FontName','隶书','FontSize',16) ylabel('Y轴','FontName','隶书','FontSize',16) 2.考虑下面的数据,一位举重教练收集了不同性别的举重动员每个年龄的最大举重磅数,他相信这三者之间存在着函数关系,请创建一个年龄数组,以便估算当前队伍中队员(要求13~20岁每一岁都有)的最大举重。 最 大 举 重 13 270 250 15 290 270 17 330 310 19 20 解:clear,clc t=[13 15 17 19 20]; sex=[0,1]'; y=[270 290 330 350 380;250 270 310 330 男 女 350 380 330 360 360 ]; x=[13:20]; sex_2=[0,1]'; y_2=interp2(t,sex,y,x,sex_2) surf(x,sex_2,y_2) 3.某乡镇企业2004-2010年的生产利润如下 年份 2004 2005 2006 2007 2008 2009 2010 利润(万元) 70 122 144 152 174 196 202 要求用多项式拟合法预测出该企业2011年和2012年的利润,并绘出拟合图。 解:x=2004:2010; y=[70 122 144 152 174 196 202]; k=polyfit(x,y,1); %得到系数 x1=2004:2013; y1=polyval(k,x1); plot(x,y,'-ro',x1,y1,'-b*'); title('某乡镇企业2004-2013年的生产利润') legend('04-10年的利润','04-13年的利润趋势线') xlabel('年份'); ylabel('利润'); text(2011,polyval(k,2011),'<---2011年利润') text(2012,polyval(k,2012),'<---2012年利润') grid on 4. 先使用命令load加载census.mat得到一组数据(cdate,pop),该数据是美国自1790到1990年(以10年为一单位)的总人口。利用回归法拟合,预测出美国在2010年的人口总数,写出拟合模型y?a0?a1x?a2x2(其中y为pop,x为cdate),并绘出拟合图。 解:clear all,clc load('census.mat'); nian=[1990:2010]; p=polyfit(cdate,pop,2); z=polyval(p,cdate); zz=polyval(p,nian); my=mean(pop); mz=mean(z); R=sum((pop-my).*(z-mz))./sqrt(sum((pop-my).^2).*sum((z-mz).^2)) plot(cdate,pop,'*',cdate,z,'r',nian,zz,'b-') xlabel('年 份(十年)','FontName','隶书','FontSize',16) ylabel('人口(百万)','FontName','隶书','FontSize',16) title('第四题 美国自1790-1990年的总人口','FontName','隶书','FontSize',20) text(1990, 248.73,'<----之后为拟合数据') legend('原数据','拟合曲线') 实验九 MATLAB绘图 实验内容 1、 二维图形的绘制 1)设计程序,在一个图形窗体中画出函数y=ex和y=logx的特性曲线。其中y=ex中x取值为(-2:0.1:2),y=logx中x取值为(0.1:0.1:5)。 要求:要有图例、标题('二维图')、坐标轴标签('x轴数据'和'y轴数据');每条曲线的clm自己设置。 解:clear,clc x1=-2:0.1:2; y1=exp(x1); x2=0.1:0.1:5; y2=log(x2); plot(x1,y1,'-r',x2,y2,'-b'); title('二维图'); legend('y=exp(x)','y=log(x)'); xlabel('x轴数据'); ylabel('y轴数据'); grid on; 2)绘制tan图形,其中x的取值为(0:pi/30:pi/2)。 要求:要有图例、标题、坐标轴标签('x轴数据'和'y轴数据');曲线的自己设置。绘制出的图形应如下右图所示。 解 :x=0:pi/100:pi/2; y=tan(x); plot(x,y,'-r+'); axis([0 pi/2 0 5]); clm title('正切函数'); legend('y=tan(x)'); xlabel('x轴数据'); ylabel('y轴数据'); 3)绘制曲线 x=tcos(3t) y=tsin2t 其中-π≤t≤π,步长取π/100。 要求:要有图例、标题、坐标轴标签;每条曲线的clm 自己设置。 解:clear,clc t=-pi:pi/100:pi; x=t.*cos(3*t); y=t.*sin(t).^2; plot(x,y); title('曲线图'); legend(strvcat('x=tcos(3t)','y=tsin^2t')); xlabel('x轴数据'); ylabel('y轴数据'); 2、 三维图形的绘制 分别用线框图和曲面图表现函数z=cos(x)sin(y)/y,其中[-1.5pi,1.5pi],y=x,要求:要有标题、坐标轴标签 x的取值为 解:clear,clc [x,y]=meshgrid(-1.5*pi:1.5*pi); z=cos(x).*sin(y)./y; subplot(1,2,1); surf(x,y,z) title('三维曲线图01'); xlabel('x轴数据'); ylabel('y轴数据'); zlabel('z轴数据'); subplot(1,2,2); mesh(x,y,z); title('三维曲线图02'); xlabel('x轴数据'); ylabel('y轴数据'); zlabel('z轴数据');
正在阅读:
MATLAB全部实验及答案03-11
市场营销管理制度02-25
幼儿园办园理念的几点思考03-08
我的课余生活作文350字07-14
2011年各地高考历史试题分模块分课时整理 必修三 doc01-14
2022年浙江省宁波市中考数学试题(解析版)(含考点分析)04-19
第三章婴儿教育09-07
中日中小学德育比较及启示-文档资料09-13
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 答案
- 实验
- 全部
- MATLAB
- 2016尔雅通识课《口才艺术与社交礼仪》答案
- 社会主义从空想到科学读后感
- 手算计算书 - 图文
- 2019届贵州省贵阳市高三上学期开学摸底考试数学(理)试题Word版含答案
- POCO C++库学习和分析-- 日期与时间
- 小班幼儿早操练习教学反思
- 大庙东沟铁矿详查报告
- 房地产集团提升品质管理标准做法 - 图文
- 除尘器及输灰系统运行规程
- 幼儿园语言教材
- 2012年4月电信IP地址段
- 共青团组织在企业文化建设中的作用
- 秦皇岛某基坑支护施工方案桩锚+土钉墙+止水帷幕 - 图文
- 病历格式血管危象
- 中国光伏玻璃行业市场分析与发展趋势研究报告-灵核网 - 图文
- 厂站OMS系统简要说明书 - 图文
- 河南城建学院-认识实习-实习报告 - 图文
- 机床夹具设计原理课程设计任务2013
- 2012年河北省建筑工程计价依据解释汇编(附件1~7)
- 《计量经济学》总复习练习题