秋级MATLAB程序设计实验报告二.docx
《秋级MATLAB程序设计实验报告二.docx》由会员分享,可在线阅读,更多相关《秋级MATLAB程序设计实验报告二.docx(11页珍藏版)》请在冰点文库上搜索。
秋级MATLAB程序设计实验报告二
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的矩阵。
2、在MATLAB中输入矩阵
,并使用MATLAB回答以下的问题:
(1)创建一个由A中第2列到第4列所有元素组成的4Χ3数组B;
(2)创建一个由A中第3行到第4行所有元素组成的2Χ4数组C;
(3)创建一个由A中前两行和后三列所有元素组成的2Χ3数组D;
(4)根据A利用单下标方法和双虾标方法分别创建向量a=[-5615]和向量b=[681],并利用向量a和b生成矩阵
;
(5)利用“[]”删除矩阵A的第二行和第三列。
3、利用ones()函数和zero()函数生成如下矩阵:
4、生成矩阵
:
(1)取出所有大于0的元素构成一个向量a(可推广到从一个矩阵里筛选出符合条件的元素组成一个向量)。
(2)将原矩阵中大于0的元素正常显示,而小于等于0的元素全部用0来表示(可推广到将原矩阵中不符合条件的全用0来表示,符合条件的值不变)。
5、已知
,
,
,
下列运算是否合法,为什么?
如合法,写出计算结果?
(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)result10=a.^2合法
(11)result11=a^2不合法
(12)result11=2.^a合法
>>result1=a'
result1=
14
25
36
>>result2=a*b
?
?
?
Errorusing==>mtimes
Innermatrixdimensionsmustagree.
>>result3=a+b
result3=
362
5811
>>result4=b*d
result4=
312222
404913
>>result5=[b;c']*d
result5=
312222
404913
-5-87
>>result6=a.*b
result6=
28-3
41530
>>result7=a./b
result7=
0.50000.5000-3.0000
4.00001.66671.2000
>>result8=a.*c
?
?
?
Errorusing==>times
Matrixdimensionsmustagree.
>>result9=a.\b
result9=
2.00002.0000-0.3333
0.25000.60000.8333
>>result10=a.^2
result10=
149
162536
>>result11=a^2
?
?
?
Errorusing==>mpower
Inputsmustbeascalarandasquarematrix.
>>result12=2.^a
result12=
248
163264
6、已知
(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
8、已知
(1)求矩阵A的秩(rank);
(2)求矩阵A的行列式(determinant);
(3)求矩阵A的逆(inverse);
(4)求矩阵A的特征值及特征向量(eigenvalueandeigenvector)。
9、已知多项式f1(x)=2x4-x2+3x+2,f2(x)=3x+2,利用MATLAB进行如下计算:
(1)计算两多项式的乘法和除法;
(2)求多项式f1(x)的根;
(3)分别计算多项式当x=3以及
时的值。
10、用两种方法求下列方程组的解,并比较两种方法执行的时间。
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=‘decision20madeon10/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=[-4:
4]
A=reshape(A,3,3)
a=linspace(0,0,9)
fori=1:
9
ifA(i)>=0
a(i)=A(i)
end
end
fori=1:
9
ifA(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
result9=a.\b
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
fori=1:
10
avg=avg+c(i)
end
avg/10
fori=1:
10
ifc(i)>max
max=c(i)
z=0
c=[1,0,8,3,6,2,-4,23,46,6]
fori=1:
10
z=100
forj=i:
10
ifc(j)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=[20-132]
f2=[32]
conv(f1,f2)
polyval(f1,3)
x=[1,3;2,4]
polyval(f1,x)
10
symsabcde
[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=[ab]
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)={student.name+student1.name+student2.name}
student.name='a'
student1.name='b'
student2.name='c'
m=[student.name,student1.name,student2.name]
m=[student.name;student1.name;student2.name]
C(1,1)={m}
13
str='decision20madeon10/20/10'
findstr(str,'20')
s1='matlabexpress'
s2='matlabexcellent'
strncmp(s1,s2,8)