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、 已知334sin234teyt若需要计算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)