实验一 MATLAB基本操作
班级:2012级通信一班
一、实验目的
1、掌握MATLAB的矩阵运算;
2、掌握MATLAB常用库函数的用法;
3、掌握MATLAB的输入输出语句和控制语句 ;
4、掌握MATLAB的作图方法;
5、掌握MATLAB的M文件和M函数。
二、实验原理
1.矩阵的赋值及运算
(1)矩阵的赋值:矩阵元素用“[ ]”括起来,同行元素之间用空格或逗号分隔,行与行之间用分号或回车符分隔。矩阵元素可为运算表达式,无任何元素的矩阵称为空矩阵。 例如:A=[1 2 3;4 5 6;7 8 9]或A=[1,2,3;4,5,6;7,8,9];
(2)矩阵的基本运算
定义a,b为两个矩阵,则基本运算语句如下:
转置:d1=a.’,d2=b.’ 共轭转置:d1=a’,d2=b’ 逆矩阵:d3=inv(a) 左除:x=a\b=inv(a)*b,a*x=b 右除:x=b/a=b*inv(a),x*a=b 对角化:d7=diag(diag(a)) 相乘:C3=A*B,C4=B*A
2.MATLAB常用库函数的用法
正弦函数:sin( ) 开方函数:sqrt( ) 对数函数:log2( ) 余弦函数:cos( ) 常用对数:log10( ) 对数函数:log( ) 正切函数:tan( ) 指数函数:exp( ) 取绝对值函数:abs()
3.MATLAB的输入输出语句和控制语句
(1)输入输出语句
Load:载入变量 Save:存储变量 Fopen:打开文件
Fwrite:写入文件 Fclose:关闭文件 Wavread:读入wav文件 Wavwrite:写入wav文件 Imread:读入图像文件,支持JPEG、BMP等格式 mwrite:写入图像文件 Fread:读入文件
(2)控制语句
①for循环:通常用来执行循环次数已知的情况,可按指定次数来重复执行循环体中的内容。基本调用格式为:for 循环变量=表达式1:表达式2:表达式3
循环体语句
end
其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。
②if语句:if 表达式
语句组1
else
语句组2
end
当表达式成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。
4.MATLAB的作图方法
利用plot(x,y,s)函数进行函数作图,将以第一个变量作为点的横坐标、第二变量作为点的纵坐标,第三个参数s为图形显示属性的设置项来绘制图形。并可以通过legend()、title()、xlabel()、ylabel()等函数设置图形中的相关参数显示。
5.MATLAB的M文件和M函数
MATLAB程序可以在命令窗口中直接执行,也可以以文本格式存放在计算机中,扩展名为 .M,因此也称为M文件。执行程序时,只需在MATLAB命令窗口下输入去掉后缀的文件名即可。
M函数是一段实现某个特定功能的程序。 通常每个M函数保存为一个M文件, 且应当以函数名为文件名, 也可以将多个M函数放在同一个M文件中,此时应当以最上层函数的名称为文件名。
M函数的定义形式为:function [返回参数]=函数名(输入参数)。
三、实验内容
1、用MATLAB产生矩阵:
12322210,B136,C12 A65479524813
并进行如下计算:
(1)分别求出A和B的逆矩阵A1和B1;
(2)分别计算A*B和B*A,并计较它们的结果;
(3)将A*B的结果对角化,形成一个对角矩阵;
(4)解方程组:Ax=C。
2、设x2,y3,用MATLAB计算下面的表达式:
(1
);
。 (2
3、用MATLAB产生一个33的复数矩阵,并对其进行转置和共轭转置。
4、用MATLAB编写一段程序,将你的学号输出到磁盘文件中,文件名即为你的学号,扩展名为“.txt”。
5、分别用MATLAB编写程序,实现以下运算:
(1)123100;
(2)12310。
6、用MATLAB作出以下函数的图像(自变量每隔0.1取一个点):
(1)ysin(2x1),0x2π;
(2)yex,5x5;
(3)ylnx,0.1x5。
7、用MATLAB编写一个M函数,输入a、b、c三个参数,输出以下函数的图像:
bb, 5x5(自变量每隔0.1取一个点)2a2a
请将该函数保存为M文件的形式,并在MATLAB命令窗口中调用该函数。 yax2bxc,
四、实验结果与分析
1.(1)
程序:A=[1 2 3;6 5 4;7 9 5];
B=[2 2 2;1 3 6;2 4 8];
d1=inv(A)
d2=inv(B)
结果:
A1=
-0.2619 0.4048 -0.1667
-0.0476 -0.3810 0.3333
0.4524 0.1190 -0.1667
B1=
0 -2.0000 1.5000
1.0000 3.0000 -2.5000
-0.5000 -1.0000 1.0000
(2)
程序:A=[1 2 3;6 5 4;7 9 5];
B=[2 2 2;1 3 6;2 4 8];
d3=A*B
d4=B*A
结果:
A*B=
10 20 38
25 43 74
33 61 108
B*A =
28 32 24
61 71 45
82 96 62
(3)
程序:A=[1 2 3;6 5 4;7 9 5];
B=[2 2 2;1 3 6;2 4 8];
d5=diag(diag(A*B))
结果:d5 =
10 0 0
0 43 0
0 0 108
(4) 程序:A=[1 2 3;6 5 4;7 9 5];
C=[10;12;13];
x=inv(A)*C
结果:x=
0.0714
-0.7143
3.7857
分析:该题目考察了了矩阵的赋值、逆矩阵、矩阵相乘、矩阵的对角化以及解矩阵方程等操作。根据要求将A,B,C矩阵复制后分别根据语句“逆矩阵:d3=inv(a)、相乘:C3=A*B,C4=B*A,对角化:d7=diag(diag(a))、左除:x=a\b=inv(a)*b,a*x=b即可得到实验结果。
2. (1)
程序:x=2
y=3
log(sqrt(x*x+y*y ))
结果:ans =
1.2825
(2)
程序:x=2
y=3
sqrt(x-0.5)/abs(sin(x))
结果:ans =
1.3469
分析:该题目考察了MATLAB常用库函数的用法,将x,y分别赋值后,输入题目所给的表达式即可得出结果。题目中用到的库函数有:以e为底的对数函数:log(),开方函数:sqrt( ),正弦函数:sin( ),取绝对值函数:abs()。
3. 程序: A=[1+i 2+4i 3;12+3i 3+12i 9+i;4 5+i 6+i];
d7=A.'
d8=A'
结果:
d7 =
1.0000 + 1.0000i 12.0000 + 3.0000i 4.0000
2.0000 + 4.0000i 3.0000 +12.0000i 5.0000 + 1.0000i
3.0000 9.0000 + 1.0000i 6.0000 + 1.0000i
d8 =
1.0000 - 1.0000i 12.0000 - 3.0000i 4.0000
2.0000 - 4.0000i 3.0000 -12.0000i 5.0000 - 1.0000i
3.0000 9.0000 - 1.0000i 6.0000 - 1.0000i
函数值Y分析:本题考查了复数矩阵的赋值,以及矩阵的转置和共轭转置的运算。在定义了复数矩阵A后。通过语句d1=A’和d2=A.’即可完成题目中的相关运算。 4.程序: y=[1206020115]; fid = fopen('d:\1206020115.txt','at'); fprintf(fid,'学号:\t'); fprintf(fid,'%d\t',y); fprintf(fid,'\n'); fclose(fid); 结果:每执行一次程序,在d盘中的1206020115.txt文件中便会输入我的学号1206020115. 分析:本题考查了matlab中的输入输出语句。程序依次执行打开文件、写入字符串、写学号序列、换行、关闭文件即可实现题目要求功能。 5.(1) 程序:sum=0 for m=1:100 sum=sum+m; end sum 结果:sum = 5050 (2)程序:n=1 for m=2:10 n=n*m; end n 结果:n= 3628800 分析:本题考察了matlab控制语句中的for循环语句,根据for循环的调用格式,每次循环叠加或叠乘即可得到结果。 6.(1) 程序:x = 0:.1:2*pi; y=sin(2*x-1); figure;plot(x,y,'-*k'); xlabel('自变量X'); ylabel('函数值Y'); title(' y=sin(2*x-1)'); 图像:
(2)程序: x = -5:.1:5; 自变量X
y=exp(x);
figure;plot(x,y,'-*k');
xlabel('自变量X');
ylabel('函数值Y');
title(' y=e^x');
图像:
y=ex
自变量X函数值Y (3)程序: x = 0.1:.1:5;
y=log(x);
figure;plot(x,y,'-*k');
xlabel('自变量X');
ylabel('函数值Y');
title(' y=ln(x)');
图像: y=ln(x)
函数值Y
分析:本题考察了MATLAB的作图方法:plot(x,y,'s')的用法。在给函数作图时,首先要给自变量X
定自变量的范围,例如题(1)中,x = 0:.1:2*pi,即x的取值范围为0~2pi并每隔0.1取一个点。接下来要写出函数的表达式,并利用plot(x,y,'s')函数做出图形:将以第一个变量作为点的横坐标、第二变量作为点的纵坐标,第三个参数s为图形显示属性的设置项来绘制图形。S=-k时表示图像将显示为黑色,并以‘-’连接各点。此外还可以通过legend()、title()、xlabel()、ylabel()等函数设置图形中的坐标轴名称、图标题以及相关参数显示。
7.M函数:function vp(a,b,c)
x=(-b/(2*a)-5):.1:(-b/(2*a)+5);
y=a.*x.*x+b.*x+c;
figure;
plot(x,y,'-*k');
xlabel('自变量X');
ylabel('函数值Y');
title('y=a*x^2+b*x+c');
命令窗口调用:a=1;
b=2;
c=1;
vp(a,b,c)
结果:(输入a=1,b=2,c=1时所得图像)
2
函数值Y
自变量X
分析:该题目考察了 M文件建立和M函数的定义以及调用。由题意可知,该M函数应是一个具有三个参数、无返回值、实现绘图功能的函数,因此根据function [返回参数]=函数名(输入参数)定义函数为function vp(a,b,c),并根据绘制波形的相关知识写好M函数中的具体语句并按照要求保存为M文件。在MATLAB命令窗口中,我们只要输入a,b,c三个参数的值后调用该M函数vp(a,b,c)即可实现绘图功能。
五、实验小结
通过本次实验,我熟悉了Matlab的基本操作,学会了在Matlab中矩阵的赋值与运算、
常用库函数的用法、输入输出语句和控制语句、作图方法、建立M文件和使用M函数。通过以上操作,我充分的感受到了Matlab的功能强大性以及运算的高效率,学会了Matlab之后,我们可以利用它替我们解决很多问题,期待下次学到Matlab的更多知识。