2014秋2012级MATLAB程序设计实验报告二

更新时间:2023-03-29 17:23:01 阅读量: 基础教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2014秋2012级《MATLAB程序设计》实验报告

实验x 班级:xx 姓名:xx 学号:xx

一、实验目的

1、掌握矩阵和数组的表示与赋值方法

2、了解字符串、结构和单元等数据类型在MATLAB中的使用

3、掌握MATLAB中基本的数值运算,了解基本统计函数的使用

4、掌握多项式基本运算以及线性方程组的求解方法

二、实验内容

1、利用“:”操作符和linspace函数生成数组a=[0,6,12,18,24,30,36,42],并将数组a分别转化为4*2和2*4的矩阵。

1 368 -572217 ,并使用MATLAB回2、在MATLAB中输入矩阵A 6916-12 1513-210

答以下的问题:

(1) 创建一个由A中第2列到第4列所有元素组成的4Χ3数组B;

(2) 创建一个由A中第3行到第4行所有元素组成的2Χ4数组C;

(3) 创建一个由A中前两行和后三列所有元素组成的2Χ3数组D;

(4) 根据A利用单下标方法和双虾标方法分别创建向量a=[-5 6 15]和向量

56

b=[6 8 1],并利用向量a和b生成矩阵E 68 ; 151

(5) 利用“[]”删除矩阵A的第二行和第三列。

3、利用ones()函数和zero()函数生成如下矩阵:

0 0 A 0 0

00000 1110 1310 1110 0000

4 12

4、生成矩阵A 303 : 214

(1) 取出所有大于0的元素构成一个向量a(可推广到从一个矩阵里筛选出

符合条件的元素组成一个向量)。

(2) 将原矩阵中大于0的元素正常显示,而小于等于0的元素全部用0来表

示(可推广到将原矩阵中不符合条件的全用0来表示,符合条件的值不

变)。

1 147 12324 1 0 d 852 c 5、已知a ,,b 135 , 下列运456 2 360

算是否合法,为什么?如合法,写出计算结果?

(1) result1=a' 合法

(2) result2=a*b 不合法

(3) result3=a+b 合法

(4) result4=b*d 合法

(5) result5=[b;c']*d 合法

(6) result6=a.*b 合法

(7) result7=a./b 合法

(8) result8=a.*c 不合法

(9) result9=a.\b 合法

(10)

(11)

(12) result10=a.^2 合法 result11=a^2 不合法 result11=2.^a 合法

>> result1=a'

result1 =

1 4

2 5

3 6

>> result2=a*b

??? Error using ==> mtimes

Inner matrix dimensions must agree.

>> result3=a+b

result3 =

3 6 2

5 8 11

>> result4=b*d

result4 =

31 22 22

40 49 13

>> result5=[b;c']*d

result5 =

31 22 22

40 49 13

-5 -8 7

>> result6=a.*b

result6 =

2 8 -3

4 15 30

>> result7=a./b

result7 =

0.5000 0.5000 -3.0000

4.0000 1.6667 1.2000

>> result8=a.*c

??? Error using ==> times

Matrix dimensions must agree.

>> result9=a.\b

result9 =

2.0000 2.0000 -0.3333

0.2500 0.6000 0.8333

>> result10=a.^2

result10 =

1 4 9

16 25 36

>> result11=a^2

??? Error using ==> mpower

Inputs must be a scalar and a square matrix.

>> result12=2.^a

result12 =

2 4 8

16 32 64

134 784

6、已知a 51244 ,b 122438 ,c [1,0,8,3,6,2, 4,23,46,6] 7827 68 53

(1) 求a+b,a*b,a.*b,a/b,a./b,a^2,a.^2的结果,并观察运算结果。

(2) 求c中所有元素的平均值、最大值、中值,并将c中元素按从小到大顺

序排列。

(3) 解释b(2:3,[1,3])的含义,并将生成的数组赋值给d。

关系运算与逻辑运算

7、已知a=20,b=-2,c=0,d=1,计算下列表达式:

(1) r1=a>b

(2) r2=a>b&c>d

(3) r3=a==b*(-10)

(4) r4=~b|c

21 2 7 9153 2 8、已知A 2 2115 13213

(1) 求矩阵A的秩(rank);

(2) 求矩阵A的行列式(determinant);

(3) 求矩阵A的逆(inverse);

(4) 求矩阵A的特征值及特征向量(eigenvalue and eigenvector)。

9、已知多项式f1(x)=2x4-x2+3x+2,f2(x)=3x+2,利用MATLAB进行如下计算:

(1) 计算两多项式的乘法和除法;

(2) 求多项式f1(x)的根;

13 (3) 分别计算多项式当x=3以及x 时的值。 24

10、用两种方法求下列方程组的解,并比较两种方法执行的时间。

7x1 14x2 9x3 2x4 5x5 3x 15x 13x 6x 4x12345 11x1 9x2 2x3 5x4 7x5 5x 7x 14x 16x 2x2345 1

2x1 5x2 12x3 11x4 4x5 100 200 300 400 500

11、建立一个元胞数组,要求第一个元素为4Χ4的魔术矩阵,第二个元素为18.66,第三个元素为'matlab',第四个元素为等差数列7,9,11,13…99。计算第一个元胞第4行第2列加上第二个元胞+第三个元胞里的第二个元素+最后一个元胞的第10个元素。

12、建立一个结构体的数组,包括3个人,字段有姓名,年龄,分数,其中分数由随机函数产生一个3行10列的数据表示了有10门课程,每门课程有三个阶段的分数。问题是:

(1) 如何找到第2个人的分数并显示出来;

(2) 如何找到第2个人的每门课程3个阶段的平均分数并显示出来;

(3) 所有同学的10门课程的每门课程的平均分如何计算出来?要求放到一

个数组里;

(4) 找到这个班所有同学的姓名放到一个元胞数组里;

13、完成以下操作:

(1) 已有str=‘decision 20 made on 10/20/10’,查找字符串中20出现的位置。

(2) 有字符串s1=‘matlabexpress’,s2=‘matlabexcellent’,比较两个字符串

的前8个字符是否相同,相同输出1,否则输出0。

统计字符串s1=‘matlabexpress’中ex出现的次数

三、源程序和实验结果

1

restoredefaultpath;matlabrc

a=linspace(0,42,8)

reshape(a,2,4)

reshape(a,4,2)

2

A=[3,6,8,1;-5,7,22,17;6,9,16,-12;15,13,-21,0]

B=A(1:4,2:4)

C=A(3:4,:)

D=A(1:2,2:4)

A

a=[A(2,1) A(1,2) A(4,1)]

a=[A(2) A(3) A(4)]

b=[A(1,2) A(1,3) A(1,4)]

b=[A(5) A(9) A(13)]

E=[a;b]

E'

A(2,:)=[]

A(:,3)=[]

3

A=zeros(5)

A(2:4,2:4)=ones(3)

A(3,3)=3

4

A=reshape(A,3,3)

a=linspace(0,0,9)

for i=1:9

if A(i)>=0

a(i)=A(i)

end

end

for i=1:9

if A(i)<0

A(i)=0

end

end

5

a=[1,2,3;4,5,6];

b=[2,4,-1;1,3,5];

c=[1;0;-2];

d=[1,4,7;8,5,2;3,6,0];

a

b

c

d

result1=a'

result2=a*b

result3=a+b

result4=b*d

result5=[b;c']*d

result6=a.*b

result7=a./b

result8=a.*c

result10=a.^2

result11=a^2

result12=2.^a

6

a=[1,3,4;5,12,44;7,8,27]

b=[-7,8,4;12,24,38;68,-5,3]

c=[1,0,8,3,6,2,-4,23,46,6]

a+b

a*b

a.*b

a/b

a./b

a^2

a.^2

for i=1:10

avg=avg+c(i)

end

avg/10

for i=1:10

if c(i)>max

max=c(i)

z=0

c=[1,0,8,3,6,2,-4,23,46,6]

for i=1:10

z=100

for j=i:10

if c(j)<z

z=c(j)

number=j

end

end

c(number)=c(i)

c(i)=z

end

b(2:3,[1,3])

b=[-7,8,4;12,24,38;68,-5,3]

b(2:3,[1,3])

d=b(2:3,[1,3])

7

a=20

b=-2

c=0

d=1

r1=a>b

r2=a>b&c>d

r3=a==b*(-10)

r4=~b|c

8

A=[7,2,1,-2;9,15,3,-2;-2,-2,11,5;1,3,2,13]

r=rank(A)

d=det(A)

A'

[V,D]=eig(A)

9

f1=[2 0 -1 3 2]

f2=[3 2]

conv(f1,f2)

polyval(f1,3)

x=[1,3;2,4]

polyval(f1,x)

10

syms abcde

[a,b,c,e,d]=solve(7*a+14*b-9*c-2*d+5*e-100,3*a-15*b-13*c-6*d-4*e-200,-11*a-9*b-2*c+5*d+7*e-300,5*a+7*b+14*c+16*d-2*e-400,-2*a+5*b+12*c-11*d-4*e-500) a=[7,14,-9,-2,5;3,-15,-13,-6,-4;-11,-9,-2,5,7;5,7,14,16,-2;-2,5,12,-11,-14]

b=[100;200;300;400;500]

c=[a b]

rref(c)

11

A(1,1)={magic(4)}

A(2,1)={18.66}

A(1,2)={'matlab'}

A(2,2)={7:2:99}

a=A{1,1}

b=A{1,2}

c=A{2,1}

d=A{2,2}

a(4,2)+b(2)+c+d(10)

12

student=struct('name',[],'age',[],'score',randint(3,10,[0,100]))

student1=struct('name',[],'age',[],'score',randint(3,10,[0,100]))

student2=struct('name',[],'age',[],'score',randint(3,10,[0,100]))

student1.score

avg1=student1.score(1,:)+student1.score(2,:)+student1.score(3,:)

avg1./3

avg=student.score(1,:)+student.score(2,:)+student.score(3,:)

avg2=student2.score(1,:)+student2.score(2,:)+student2.score(3,:)

a=[avg./3;avg1;avg2./3]

C(1,1)={http://www.77cn.com.cn+http://www.77cn.com.cn+http://www.77cn.com.cn}

http://www.77cn.com.cn='a'

http://www.77cn.com.cn='b'

http://www.77cn.com.cn='c'

m=[http://www.77cn.com.cn,http://www.77cn.com.cn,http://www.77cn.com.cn] m=[http://www.77cn.com.cn;http://www.77cn.com.cn;http://www.77cn.com.cn] C(1,1)={m}

13

str='decision 20 made on 10/20/10'

findstr(str,'20')

s1='matlabexpress'

s2='matlabexcellent'

strncmp(s1,s2,8)

本文来源:https://www.bwwdw.com/article/2byl.html

Top