MATLAB全部实验及答案
实验一、MATLAB基本操作
实验内容及步骤
4、 有关向量、矩阵或数组的一些运算 (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 5、 已知y?3?4t???2?esin??43t?3??若需要计算t∈[-1,1],取间隔为0.01,试计算出相对应的y值。
用步长为0.01的for循环 搞定
实验二、MATLAB运算基础
实验内容及步骤 (一)
2、 设有矩阵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])
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、求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) (二) 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)=[]