1、实验二 矩阵和数组的操作 一、 实验目的及要求 1.掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。 2.学习矩阵和数组的加减运算与乘法。 3.掌握对数组中元素的寻访与赋值,会对数组进行一般的操作。 二、 实验内容 1. 用三种方法创建一个3*3矩阵,然后利用矩阵编辑器,将其扩充为4*5矩阵,并保存,试着调用它。 2. 建立一个等差数列,然后由它产生一个对角阵 3. 利用MATLAB的函数inv(A)求方阵A的逆矩阵。 三、 主要仪器设备 计算机、MATLAB软件 四、操作方法与实验步骤 1. 用三种方法创建一个3*3矩阵,然后利用矩阵编辑器
2、将其扩充为4*5矩阵,并保存,试着调用它。 (1)直接输入法 >> A=[3,2,1;4,5,6;7,8,9] A = 3 2 1 4 5 6 7 8 9 (2)直接利用MATLAB提供的函数创建一个3*3矩阵 >> A=rand(3) A = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 (3) 利用MATLAB提供的“Matrix Editor”完成输入 步骤1 在命令区
3、输入A=1. 步骤2 用鼠标单击工具栏的工作区浏览器,在弹出的变量浏览器中选中变量A,打开矩阵编辑器。 步骤3 在左下角的两个文本框中分别输入3行3列。 步骤4 把矩阵的行数和列数改为4和5,用鼠标选中表格中需要修改的元素。 步骤5 在命令区输入save data A,保存。然后在命令区输入 load data 将文件中的矩阵读到工作区的内存中。 2. 建立一个等差数列,然后由它产生一个对角阵 >> a=linspace(0,1.5,5) a = 0 0.3750 0.7500 1.1250 1.5000 >> A=
4、diag(a) A = 0 0 0 0 0 0 0.3750 0 0 0 0 0 0.7500 0 0 0 0 0 1.1250 0 0 0 0 0 1.5000 3. 利用MATLAB的函数inv(A)求方阵A的逆矩阵。 >> A=[1,2;5,6]; >>
5、B=inv(A) B = -1.5000 0.5000 1.2500 -0.2500 五、练习题(实验结果与分析) 1.创建一个5*5矩阵,提取主对角线以上的部分。 >> A=pascal(5) A = 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70 >> U=triu(A) U = 1 1 1 1 1
6、 0 2 3 4 5 0 0 6 10 15 0 0 0 20 35 0 0 0 0 70 2. A=rand(3),B=magic(3),C=rand(3,4),计算A*B*C。 >> clear all >> A=rand(3); >> B=magic(3); >> C=rand(3,4); >> A*B*C ans = 9.1418 11.0431 15.6188 13.3083 12.1665 14.4459 20.5607 18.0644
7、 10.6153 11.0534 17.7125 15.7092 3. 创建一个3*3矩阵,并求其转置,逆矩阵。 >> C=rand(3) C = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 >> B=C' B = 0.9501 0.2311 0.6068 0.4860 0.8913 0.7621 0.4565 0.0185 0.8214 >> A=inv(C
8、) A = 1.6740 -0.1196 -0.9276 -0.4165 1.1738 0.2050 -0.8504 -1.0006 1.7125 4. 用两种方法求Ax=b的解(A为4阶随即矩阵,b为4阶列向量)。 >> A=rand(4) A = 0.8600 0.8998 0.6602 0.5341 0.8537 0.8216 0.3420 0.7271 0.5936 0.6449 0.2897 0.3093 0.4966 0.8180 0.3412
9、 0.8385 >> b=[1;2;3;4] b = 1 2 3 4 >> x=A\b x = -7.0715 17.6151 -9.8773 -4.2067 >> x=linsolve(A,b) x = -7.0715 17.6151 -9.8773 -4.2067 5. 创建一个4阶随机矩阵A,计算. >> A=rand(4) A = 0.5681 0.4449 0.9568 0.9797 0.3704 0.6946 0.5226 0.271
10、4 0.7027 0.6213 0.8801 0.2523 0.5466 0.7948 0.1730 0.8757 >> A^3 ans = 3.9072 4.6211 4.5141 4.1934 2.3623 2.7551 2.7984 2.4013 3.3261 3.8139 3.9281 3.3593 3.0033 3.6596 3.3519 3.2958 6. 求100-999之间能被21整除得数的个数。 >> A=100:999; >> B=find(mo
11、d(A,21)==0) B = Columns 1 through 11 6 27 48 69 90 111 132 153 174 195 216 Columns 12 through 22 237 258 279 300 321 342 363 384 405 426 447 Columns 23 through 33 468 489 510 531 552 573 594 615 636 657 678 Columns 34 through 43 699 720
12、741 762 783 804 825 846 867 888 >> C=length(B) C = 43 7. 设有矩阵A和B [1] 求它们的乘积C=A*B。 [2] 将矩阵C的右下角3*2子矩阵赋给D A=[1 2 3 4 5 B=[3 0 16 6 7 8 9 10 17 -6 9 11 12 13 14 15 0 23 -4 16 17 18 19 20 9 7 0 21 22
13、 23 24 25] 4 13 11] >> A=[1:5;6:10;11:15;16:20;21:25] 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] B = 3 0 16 17 -6 9 0
14、 23 -4 9 7 0 4 13 11 >> C=A*B C = 93 150 77 258 335 237 423 520 397 588 705 557 753 890 717 >> D=C(3:5,[2,3]) D = 520 397 705 557 890 717 实验三 矩阵和数组的操作 一、 实验目的及要求 1.掌握MATLAB的基本绘图命令。 2.掌握运用MATLAB绘制一维、二维、三维图形的方法。 3.给图形加以修饰。 二、 实
15、验内容 1. 创建一个5*5魔方矩阵,并画出表示这个矩阵的图形。 2. 在同一坐标轴里绘出y=sin(x),z=cos(x)两条曲线。 3. 画出y=x^2的曲线(x∈(-5,5))。 4. 在同一窗口,不同坐标系里分别绘出y1=sinx,y2=cosx,y3=sinh(x),y4=cosh(x)4个图形。 5. 绘制一个三维曲线x=cosp,y=sinp,z=p。 三、 主要仪器设备 计算机、MATLAB软件 四、操作方法及实验步骤 1.创建一个5*5魔方矩阵,并画出表示这个矩阵的图形。 在命令区输入:A=magic(5);plot(A) 得出下图
16、 2. 在同一坐标轴里绘出y=sin(x),z=cos(x)两条曲线。在命令区输入: >> x=linspace(0,2*pi,50); >> y=sin(x); >> plot(x,y) >> hold on >> z=cos(x); >> plot(x,z) >> hold off 得图(2) 3.画出y=x^2的曲线(x∈(-5,5))。在这曲线上加入相同区间里的y=x^(1/3)的曲线,并且要求采用绿色折线标识。 在命令区输入:>> x=linspace(-5,5,100); >> y=x.^2; >> plot(x,y) >> ho
17、ld on >> z=x.^(1/3); >> plot(x,z,'g--') >> hold off 得图(3) 4. 在同一窗口,不同坐标系里分别绘出y1=sinx,y2=cosx,y3=sinh(x),y4=cosh(x)4个图形。在命令区输入: >> x=linspace(0,2*pi,30); >> subplot(2,2,1);plot(x,sin(x)); >> subplot(2,2,2);plot(x,cos(x)); >> subplot(2,2,3);plot(x,sinh(x)); >> subplot(2,2,4);plot(x,cosh(x));
18、 得图(4) 5. 绘制一个三维曲线x=cosp,y=sinp,z=p.在命令区输入: >> p=0:pi/10:20*pi; >> x=cos(p);y=sin(p);z=p; >> plot3(x,y,z) 得图(5) (2) (3) (4) (4) 五、练习 1.画出横坐标在(-15,15)上的函数y=cosx的曲线。 在命令区输入:>> x=-15:0.1:15; >
19、> y=cos(x); >> plot(x,y) 得下图 (5) 用图形表示离散函数y=|(n-6)|^(-1),并加入网络。 在命令区输入:>> n=7:1:100; >> Y=(abs((n-6))).^(-1); >> plot(n,Y) >> grid (6) 用图形表示连续调制波形y=sin(t)*sin(9*t)及其包络线。 在命令区输入:>> t=linspace(0,pi,100); >> y=sin(t).*sin(9*t); >> plot(t,y) >> z1=sin(t); >> plot(t,z1) >> y=sin(
20、t).*sin(9*t); >> plot(t,y) >> hold on >> plot(t,z1) >> hold on >> z2=-sin(t); >> plot(t,z2) 得下图 实验四 M文件的编写 一、 实验目的及要求 1.学习MATLAB中的关系运算和逻辑运算,掌握他们的表达形式和用法。 2.掌握MATLAB中的选择结构和循环结构。 3.学会用MATLAB进行M文件的编写和调用。 二、 实验内容 1. 创建一个矩阵,用函数all和any作用于该矩阵,比较结果。 2. 编写一个switch语句,判断输入数的奇偶性。 3. 编
21、写一个程序画出下列分段函数所表示的曲面,并用M文件存储。 三、 主要仪器设备 计算机、MATLAB软件 四、操作方法与实验步骤 1.创建一个矩阵,用函数all和any作用于该矩阵,比较结果。 >> a=[1,2,0,3;2,0,1,4]; >> b=all(a) b = 1 0 0 1 >> c=any(a) c = 1 1 1 1 >> d=all(b) d = 0 >> e=any(b) e = 1 2.编写一个switch语句,判断输入数的
22、奇偶性。
clear
n=input('n=');
switch mod(n,2);
case 1
A=‘奇’,
case 0
A=‘偶’,
otherwise
A=‘空’,
End
输入和输出为:n=9
A =
奇
3.编写一个程序画出下列分段函数所表示的曲面,并用M文件存储。
f(x1,x2)=0.5457exp(-0.75x2^2-3.75x1^2-1.5x1) x1+x2>1
0.7575exp(-x2^2-6x1^2) -1 23、 0.5457exp(-0.75x2^2-3.75x1^2+1.5x1) x1+x2<=-1
步骤1.打开M文件编辑器file,编写程序:
a=2;b=2;
clf;
x=-a:0.2:a;y=-b:0.2:b;
for i=1:length(x)
for j=1:length(x)
if x(j)+y(i)>1
z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2-1.5*x(j));
else if x(j)+y(i)<=-1
z(i,j)= 24、0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2+1.5*x(j));
else
z(i,j)=0.7575*exp(-y(i)^2-6*x(j)^2);
end
end
end
end
axis([-a,a,-b,b,min(min(z)),max(max(z))]);
colormap(flipud(winter));surf(x,y,z);
步骤2.选择file/save命令,将文件保存命名为firsr.m。
步骤3 在命令窗口输入文件名,可看见图形如 25、下:
四、 练习
1.编写一段程序计算n的阶乘。
步骤一:打开M文件编辑器,编写以下内容:
clear
n=input('n=');
sum=1;
for i=1:n
sum=sum*i;
end
sum
步骤二:将文件保存并命名。
步骤三:在命令窗口输入文件名然后可得到:
n=5
sum =
120
2.编写一个程序求出阶乘大于或等于99^99的最小整数。
编写程序如下:clear
sum=1;
for i=1:1000
sum=sum*i;
if sum>=99^99
bre 26、ak
end
end
i
最后得出结果:
i =
120
讨论、心得
通过本次实验,我熟悉了MATLAB的各个命令窗口以及基本操作,能够进行一些数值运算,实现语句的重调和修改。还学会了用它对数组和矩阵进行一系列操作;学会了用它绘制一维、二维、三维图形并对图形加以修饰;学会了编写M文件以及MATLAB中的一些运算及其表现方式和用法。
总之,在学习过程中,我发现MATLAB的功能十分强大,在使用简单易用的程序语句的同时,还具有强大的数据处理能力、出色的图形处理功能以及应用软件的开发等多种功能,可以说,MATLAB小到计算数据,大到设计飞机都可以使用。
这么一款功能强大、多样,且非常实用的软件,我想我们有必要好好地学习与掌握它。






