实 验 指 导 书
前言
MATLAB程序设计语言是一种高性能的、用于科学和技术计算的计算机语言。它是一种集数学计算、分析、可视化、算法开发与发布等于一体的软件平台。自1984年MathWorks公司推出以来,MATLAB以惊人的速度应用于自动化、汽车、电子、仪器仪表和通讯等领域与行业。MATLAB有助于我们快速高效地解决问题。MATLAB相关实验课程的学习能加强学生对MATLAB程序设计语言理解及动手能力的训练,以便深入掌握和领会MATLAB应用技术。
目录
基础型实验 - 1 -
实验一 MATLAB集成环境使用与基本操作命令练习 - 1 -
实验二 MATLAB中的数值计算与程序设计 - 7 -
实验三 MATLAB图形系统 - 11 -
基础型实验
实验一 MATLAB集成环境使用与基本操作命令练习
一 实验目的
熟悉MATLAB语言编程环境;熟悉MATLAB语言命令
二 实验仪器和设备
装有MATLAB7.0以上计算机一台
三 实验原理
MATLAB 是以复杂矩阵作为基本编程单元的一种程序设计语言。它提供了各种矩阵的运算与操作,并有较强的绘图功能。
1.1 基本规则
1.1.1 一般MATLAB命令格式为
[输出参数1,输出参数2,……]=(命令名)(输入参数1,输入参数2,……)
输出参数用方括号,输入参数用圆括号如果输出参数只有一个可不使用
括号。
1.1.2 %后面的任意内容都将被忽略,而不作为命令执行,一般用于为代码加注释。
1.1.3 可用↑、↓键来重现已输入的数据或命令。用←、→键来移动光标进行修改。
1.1.4所有MATLAB命令都用小写字母。大写字母和小写字母分别表示不同的变量。
1.1.5常用预定义变量,如pi 、Inf、NaN、ans
1.1.6矩阵的输入要一行一行的进行,每行各元素用空格或“,”分开,每行用“;”分开。如
MATLAB书写格式为A=[1 2 3 ;4 5 6 ;7 8 9]
在MATLAB中运行如下程序可得到A矩阵
a=[1 2 3;4 5 6;7 8 9]
a =
1 2 3
4 5 6
7 8 9
1.1.7 需要显示命令的计算结果时,则语句后面不加“;”号,否则要加“;”号。
运行下面两种格式可以看出它们的区别:
a=[1 2 3;4 5 6;7 8 9] a=[1 2 3;4 5 6;7 8 9];
a=
1 2 3 不显示结果
4 5 6
7 8 9
1.1.8 当输入语句过长需要换行时,应加上“…”后再回车,则可续行输入。
1.2 文件管理常用命令
1.2.1 帮助(HELP)命令
MATLAB有很多命令,因此很不容易记忆。使用HELP命令可以得到有关命令的屏幕帮助信息。
如 在MATLAB环境下直接运行HELP命令就会在屏幕上给出MATLAB的基本命令以及相关的工具箱软件命令(请自行验证)。
而下面的格式可以得到指定命令的帮助信息,和详细说明。
help 命令名
1.2.2 save 命令
该命令存储定义的变量或演算结果,也可以用来存储指定的变量。
命令格式为
save 文件名 [变量名表] [-append] [-ascii]
1.2.3 what 命令
该命令可以在当目录下显示MATLAB文件和MAT数据文件
1.2.4 dir 命令
显示当前目录下的所有文件.
1.2.5clear命令
如果输入 calear a b c ,则表示清除工作空间中指定变量a,b,c;如果仅仅输入calear命令,则清除整个工作空间。
1.3 矩阵运算
MATLAB具有强大的矩阵运算功能,这里我们只作简单介绍.
1.3.1在MATLAB中表示一个矢量要用方括号, 而列矢量的输入只需在行矢量输入格式基础上加转置符“’”即可。
如 x=[1 2 3;4 5 6]
x =
1 2 3
4 5 6
而 x=[1 2 3;4 5 6]' (加转置符)
x =
1 4
2 5
3 6
1.3.2下面三条命令可以产生一个行矢量
1a=linspace(x,y,n)
2a=logspace(x,y,n)
3a=[x:n:y]
第一条命令可以在线性空间产生一个值在x至y之间间隔点数为n的行矢量(一组数据)。其行矢量的起始值是x, 终值为y, 点数为n。
第二条命令可以在对数空间产生一个值在10x至 10y之间等间隔的行矢量(一组数据)。
第三条命令产生x至y步长为n的行矢量。
但是, 三个命令之间存在差别,下面的例子可以说明这一点。
例1 x=logspace(0,5,6)
x =
1 10 100 1000 10000 100000
例2 x=linspace(0,10,11)
x =
0 1 2 3 4 5 6 7 8 9 10
例3 x=[0:1:10]
x =
0 1 2 3 4 5 6 7 8 9 10
通过上面三个例子可以看出例一, 例二中n代表选取的点数。而在例三 中n则表示步长. 注意它们的区别。
1.3.3 矩阵的加, 减, 乘, 除等, 和其它语言书写一样。 但要注意的是在运算 符前面加有“.”则表示是数组运算,为对应元素的相应操作。
例4 请注意下面的不同情况.
a=[1 2;3 4];
b=[2 2;2 2];
c=a*b c=a.*b
c = c =
6 6 2 4
14 14 6 8
c=a/b c=a./b
c = c =
1.0e+015 * 0.5000 1.0000
-2.2518 2.2518 1.5000 2.0000
-2.2518 2.2518
1.4 常见数学函数
| 函 数 名 | 数 学 计 算 功 能 | 函 数 名 | 数 学 计 算 功 能 |
| abs(x) | 实数的绝对值或复数的幅值 | floor(x) | 对x朝-∞方向取整 |
| acos(x) | 反余弦arcsin | (m,n) | 求正整数m和n的最大公约数 |
| acosh(x) | 反双曲余弦arccosh | imag(x) | 求复数x的虚部 |
| angle(x) | 在四象限内求复数 x 的相角 | lcm(m,n) | 求正整数m和n的最小公倍数 |
| asin(x) | 反正弦arcsin | log(x) | 自然对数(以为底数) |
| asinh(x) | 反双曲正弦arcsinh | log10(x) | 常用对数(以10为底数) |
| atan(x) | 反正切arctan | real(x) | 求复数x的实部 |
| atan2(x,y) | 在四象限内求反正切 | rem(m,n) | 求正整数m和n的m/n之余数 |
| atanh(x) | 反双曲正切arctanh | round(x) | 对x四舍五入到最接近的整数 |
| ceil(x) | 对x朝+∞方向取整 | sign(x) | 符号函数:求出x的符号 |
| conj(x) | 求复数x的共轭复数 | sin(x) | 正弦sin |
| cos(x) | 余弦cos | sinh(x) | 反双曲正弦sinh |
| cosh(x) | 双曲余弦cosh | sqrt(x) | 求实数x的平方根: |
| exp(x) | 指数函数 | tan(x) | 正切tan |
| fix(x) | 对x朝原点方向取整 | tanh(x) | 双曲正切tanh |
ceil(x)= -4 -2 0 2 5 7
fix(x) = -4 -2 0 1 4 6
floor(x) = -5 -3 -1 1 4 6
round(x) = -5 -2 0 1 5 7
1.5 关系及逻辑运算
1.5.1 关系运算允许常量(或矩阵中的元素与元素) 之间的比较. 如果比较结果为真,则答案为1, 否则为0. 常用的关系运算符如下:
< 小于 , > 大于 , == 等于
<= 小于等于, >= 大于等于, ~= 不等于
对于复数”==” 和”~=” 既比较实部也比较虚部, 而其它运算仅比较实部。
例6 比较 a=[5:1:15] 与 b=[1 2 8 8 7 10 12 11 13 14 15] 中的对应元素 是否相同,则运行下面程序
a=[5:1:15];
b=[1 2 8 8 7 10 12 11 13 14 15];
y=a==b
y =
0 0 0 1 0 1 0 0 1 1 1
1.5.2MATLAB有三个逻辑运算符.
& 逻辑与 | 逻辑或 ~ 逻辑非
在矩阵运算中,以上命令是将两个矩阵中的对应元素进行运算, 得到的结 果是具有同样元素的矩阵。
例7 分别对下面两个矩阵进行逻辑运算.
X=[0 1;1 0]; Y=[0 0;1 0];
X&Y
ans =
0 0
1 0
X|Y
ans =
0 1
1 0
~X
ans =
1 0
0 1
MATLAB在进行混合运算时, 其顺序为:
算术运算 → 关系比较 → 逻辑运算
例8 计算 x&y+x>y 时, 程序首先执行x+y运算, 然后将相加结果与y比较, 最后将比较结果和x作与运算,运行结果如下。
x=[0 1;1 0];
y=[0 0;1 0];
x&y+x>y
ans =
0 1
1 0
四 实验内容和步骤
熟悉MATLAB语言编程环境。在这一环境中,系统提供了许多编写,调试和执行MATLAB程序的便利工具。熟悉变量、MATLAB基本数学函数使用,矩阵操作练习,主要包括矩阵的建立,算数运算,逻辑运算和关系运算。
(一)熟悉Matlab的运行环境以及HELP命令,运行demo命令,观看matlab所具有的功能。
(二)验证例题中所有操作。
(三)完成以下各题,并在机器上运行结果验证。
1.输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令窗口中执行下列表达式,掌握其含义:
A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A
2.输入C=1:2:20,
实验二 MATLAB中的数值计算与程序设计
一 实验目的:
完成MATLAB下数据分析与程序设计有关问题的练习。学习脚本文件的编写,数值输入,数组计算,程序调试等;练习利用MATLAB编程序解决基本数学问题。学习全局和局部变量的使用,流程控制结构,函数编写及其调试。
二 实验仪器和设备
装有MATLAB7.0以上计算机一台
三 实验原理
1. 常用运算命令
| 运算命令名 | 功能 |
| angle | 求复数的角 |
| min | 求最小值 |
| max | 求最大值 |
| sum | 求和 |
| roots | 求多项式的根 |
| poly | 由多项式的根求多项式的系数 |
| polyval | 求给定点多项式的值 |
| polyder | 多项式求导 |
a=[1 2 3 4];
roots(a)
ans =
-1.6506
-0.1747 + 1.5469i
-0.1747 - 1.5469i
或
roots([1 2 3 4])
ans =
-1.6506
-0.1747 + 1.5469i
-0.1747 - 1.5469i
例2 已知某多项式的根如下
-1.6506
-0.1747 + 1.5469i
-0.1747 - 1.5469i
求该多项式.
poly([-1.6506,-0.1747+1.5469i,-0.1747 - 1.5469i])
ans =
1.0000 2.0000 3.0001 4.0001
即所求多项式为 S^3+2S^2+3S+4 .
2. 建立M文件
将多个可执行的系统命令,用文本编辑器编辑后并存放在后缀为 .m 的文件中,若在MATLAB命令窗口中输入该m-文件的文件名(不跟后缀.m!),即可依次执行该文件中的多个命令。这个后缀为.m的文件,也称为Matlab的脚本文件(Script File)。
注意:文件存放路径必须在Matlab能搜索的范围内。
3. 建立函数文件
对于一些特殊用户函数,系统提供了一个用于创建用户函数的命令function,以备用户随时调用。
1.格式:
function [输出变量列表]=fun_name(输入变量列表)
用户自定义的函数体
2.函数文件名为:fun_name,注意:保存时文件名与函数名最好相同;
3.存储路径:最好在系统的搜索路径上。
4. 调用方法:输出参量=fun_name (输入变量)
例5:
计算s = n!,在文本编辑器中输入:
function s=pp(n);
s=1;
for i=1:n
s=s*i;
end
s;
在MATLAB命令窗口中输入:s=pp(5)
结果为: s = 120
3.求下列表达式的值。
(1)
(2),其中a=3.5,b=5,c=-9.8。
实验三 MATLAB图形系统
一 实验目的
学会用MATLAB语言绘图
二 实验仪器和设备
装有MATLAB7.0以上计算机一台
三 实验原理
1、 plot
该命令在线性坐标系下绘制y对应于x的轨迹。若其中之一为矩阵则该命令将对应于矩阵的行或者列绘制一簇曲线。该命令也可以在同一坐标轴下绘制多条曲线。
例1 运行程序
t=[0:1:10];
x1=t;
plot(x1)
可在图形窗口得到下面图形:
例2
x=[0:0.5:7];
y=sin(x);
y1=2*x;
y2=3*x;
plot(y,x,y1,x,y2,x)
从上面的例子可以看出, 如果要在同一坐标轴下绘制多条曲线, 可用如下格式:
plot(x1,y1,x2,y2……..xn,yn) % 对应于不同矢量时
其中x1,y1……….xn,yn是对应的关系。
2、log log
在两个对数(标准对数)坐标间绘制图形。
3、 semilogx 或semilogy
在x轴或y轴为对数坐标, 而另一轴为线性轴的空间绘制图形。
4、polar
在极坐标空间绘制图形。
5、grid
在图形中加栅格。
6、subplot (r,c,p)
该命令将屏幕分成r*c个窗口,p表示在第几个窗口. 同时绘制多个图形窗口时,绘图语句间应用逗号分开。
例3 下面的程序产生四个窗口,且分别绘制相应图形.
t=[0:0.01:2*pi];
y=sin(t);
x=cos(t);
subplot(221),plot(t,y),grid,subplot(222),plot(t,x),
grid,subplot(223),polar(t,y),subplot(224),polar(t,x)
从上面的程序可以看出,subplot语句中的r,c,p可以不用逗号分开。
上面程序执行后得到如下图形:
7、gtext
该命令用于鼠标定位的文字注释. 执行完绘图命令后再执行gtext(‘说明文字’) 命令, 就可在屏幕上得到一个光标, 然后,用鼠标选择说明文字的位置。
例4 t=[0:1:10];
x1=2*t;
x2=0.5*t;
plot(x1,t,x2,t);
gtext('x=2t');
gtext('x=0.5t')
8、 如果需要同时在不同窗口绘制图形, 可用figure语句来完成。
例5 t=[0:1:10];
x1=2*t;
x2=3*t;
figure,plot(x1),figure,plot(x2)
9、有关绘图方面的还有:
✧Title 给当前图像加标题。
✧xlabel 或 ylabel 给x或y轴加标注。
✧text 在当前图像上指定位置加注释。
等。
10、在同一座标系中绘制多个曲线时, 曲线的颜色可以自动确定,也可以自己选择。
其使用格式如下:
plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)
| b | 蓝色 | m | 紫红色 |
| c | 青色 | r | 红色 |
| g | 绿色 | w | 白色 |
| k | 黑色 | y | 黄色 |
| - | 实线(默认) | : | 点连线 |
| -. | 点画线 | -- | 虚线 |
| . | 点 | s | 正方形 |
| + | 十字号 | d | 菱形 |
| o | 圆圈 | h | 六角形 |
| * | 星号 | p | 五角星 |
| x | 叉号 | > | 右三角 |
plot3函数与plot函数的用法类似。
还可以用mesh函数绘制三维网格图;用surf函数绘制三维曲面图。
MATLAB提供了丰富的三维绘图函数,可以通过help命令查看。
例6 绘制三维曲线:
t=0:pi/100:20*pi;
x=sin(t) ;
y=cos(t);
z=t.*sin(t).*cos(t);
plot3(x,y,z) ;
title('line in 3-D space')
xlabel(‘X’) ;ylabel(‘Y’);zlabel(‘z’);
grid on
运行结果如下: