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)={++}
='a'
='b'
='c'
m=[,,] m=[;;] C(1,1)={m}
13
str='decision 20 made on 10/20/10'
findstr(str,'20')
s1='matlabexpress'
s2='matlabexcellent'
strncmp(s1,s2,8)