MATLAB全部实验及答案
- 格式:doc
- 大小:1.98 MB
- 文档页数:27
MATLAB全部实验及答案
实验一、MATLAB基本操作
实验内容及步骤
1、 命令窗口的简单使用
(1) 简单矩阵的输入
(2) 求[12+2×(7-4)]÷32的算术运算结果
2、 有关向量、矩阵或数组的一些运算
(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
3、 已知334sin234teyt若需要计算t∈[-1,1],取间隔为0.01,试计算出相对应的y值。
用步长为0.01的for循环 搞定
实验二、MATLAB运算基础
实验内容及步骤
1、 设有矩阵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])
2、 完成下列操作
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、 已知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、 写出使以下这段文字成为字符串的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)
6、 用结构体数组来存储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
7、 求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)
8、 建立矩阵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)=[]
9、 利用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、 输入一个百分制成绩,要求输出成绩等级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)