MATLAB应用基础实验讲义.docx
《MATLAB应用基础实验讲义.docx》由会员分享,可在线阅读,更多相关《MATLAB应用基础实验讲义.docx(27页珍藏版)》请在冰点文库上搜索。
MATLAB应用基础实验讲义
[实验题目一]MATLAB开发环境
一、实验目的
(1)了解MATALB语言的主要特点。
(2)熟悉MATLAB的用户界面和基本操作。
(3)初步掌握命令窗和文本编辑器的操作方法。
(4)了解MATLAB的帮助系统。
二、MATLAB简介
MATLAB(MatrixLaboratory矩阵实验室),是美国Mathworks公司于1984年推出的一种科学计算软件,是一种以矩阵运算为基础的交互式程序语言,将高性能的数值计算和可视化集成在一起,是一种功能强大的分析、计算及可视化工具,广泛应用于科学计算、系统控制以及信息处理等领域。
MATLAB语言简单易学,容易使用,库函数丰富;程序设计自由度大,可移植性好,源程序开放,可扩展性强;图形功能强大;具有功能强大的工具箱和帮助系统。
1.MATLAB工作环境
(1)MATLAB系统的启动与退出
在Windows桌面上双击MATLAB图标,进入MATLAB主界面。
在MATLAB的命令窗口输入“exit”或“quit”或者关闭MATLAB窗口都可退出MATLAB。
(2)MATLAB的用户界面
MATLAB的用户界面主要由以下部分组成:
●菜单栏
●工具栏
●命令窗口
在命令窗下键入一条命令,按Enter键,该命令被立即执行并显示结果。
命令窗中的快捷键:
“↑”:
调出前一个命令行。
“↓”:
调出后一个命令行。
“Esc”:
清除当前行。
“Ctrl+C”:
中断正在执行的命令。
命令窗中的控制命令:
clc:
清空命令窗口中显示的内容。
●命令历史窗口
显示命令的历史记录,双击该窗口中的某条命令,可立即执行该命令。
●当前路径窗口
显示当前工作在什么路径下。
●工作空间窗口
用于显示当前MATLAB变量的名称,数值,数据结构,类型。
常用命令:
clear:
删除工作空间中的变量。
whos:
查看MATLAB内存变量的名称、大小、字节数和类型。
save:
把工作空间的数据存放到mat数据文件中。
load:
把数据文件中的变量加载到工作空间。
(3)M文件编辑器
M文件编辑器是用于编写MATLAB程序文件(M文件)的文本编辑器。
在MATLAB菜单栏中选择“File|New/M-file”命令或工具栏中点击“NewM-file”图标,可打开M文件编辑器。
编辑的文件保存为扩展名为“.m”的文件,在命令窗口中输入文件名即可运行该M文件。
2.MATLAB的帮助系统
使用帮助浏览器,打开方法:
利用菜单栏的“help”或点击工具栏的“?
”图标。
使用helpwin”或”helpdesk”命令。
使用帮助命令:
help命令名;可获得某条命令的帮助信息(用法说明)。
例如:
helpstem可得到“stem”命令(函数)的帮助信息。
help类型名;可分类搜索帮助信息。
例如:
helpdatafun可得到“数据分析和傅里叶变换”的所有命令。
Demos演示,提供演示实例,打开方法:
选择菜单命令“Help---Demos”
命令窗口中运行Demos命令。
三、实验内容
1.运行MATLAB7.0软件,熟悉MATLAB用户界面。
2.熟悉MATLAB7.0的常用窗口及功能。
3.查看MATLAB7.0的菜单栏及工具栏的内容及功能。
4.学习命令窗口、工作空间窗口和文本编辑器的常用操作。
5.使用帮助系统,查看帮助信息。
6.使用帮助命令,查看”demo”命令的帮助信息。
打开demos窗口,查看演示结果。
[实验题目二]MATLAB基本运算
一、实验目的
(1)了解MATALB的变量、函数和表达式。
(2)熟悉MATLAB数组、矩阵的创建方法。
(3)掌握数组运算、矩阵运算、关系运算、逻辑运算等基本运算及常用函数的使用。
二、实验原理(MATLAB的基本运算介绍)
(一)MATALB的变量、函数和表达式
MATALB的变量和常量都是数组(或矩阵)的形式存在,且每个元素可以是复数。
MATALB提供各种类别的函数,除了基本的数学函数外,还提供了多种专门功能的工具箱函数。
MATALB的表达式由变量、数值、函数及运算符构成。
例如:
(12+2*(8-5))/3^2%(12+2×(8-5))/32
a=5;b=[1,2,3];c=3+2*a-max(b)
a=sin(pi/2)+sqrt(9)%a=sin(π/2)+
t=2,a=exp(-t)%a=e-t
(二)MATALB的常用数据类型
数值型:
整数(int、uint)、浮点数(double(64位)、float(32位))、复数(a+bi)、
无穷大数(inf、-inf)。
MATALB默认的数据类型是double。
逻辑型:
只有0和1两种状态。
a=5;b=a>3。
a为double型,b为logical型。
字符串型:
c=’student’。
(三)MATALB的数组和矩阵运算
1.数组(矩阵)的创建
数组的直接创建:
a=[12345]a=[1,2,3,4,5]a=[1;2;3;4;5]a=[1,1+2i,2+3i]n=0:
5
b=[1,2,3;4,5,6]%生成2×3的二维数组(矩阵)c=b’%c是b的转置
用函数生成数组:
ones(2,3)%生成一个2×3的1数组
zeros(3,2)%生成一个3×2的0数组
eye(n)%生成一个n×n的单位矩阵
rand(2,3)%生成一个2×3均匀分布随机矩阵
randn(2,3)%生成一个2×3正态分布的随机矩阵
2.数组(矩阵)基本操作
数组寻址;a=[123456]a
(2)a(2:
5)a(4:
end)%a
(2)=2a(2:
5)=[2345]
a=[123;456]a(3)a(2,3)%a(3)=2a(2,3)=6
数组的扩展和提取x=[123;456]x(3,3)=10%x扩展为3×3
a=ones(2,2)b=zeros(2,2)c1=[a,b]c2=[a;b]%扩展
a=[123;456;789]b=a(1:
2,2:
3)%提取a的前2行的后2列形成b
按列拉长:
c=a(:
)
数组元素的删除a=rand(4,4)a(3,:
)=[]%删除a的第3行
a=rand(4,4)a(:
[1,3])=[]%删除a的第1和第3列
数组操作函数:
[m,n]=size(X):
%求数组(矩阵)的大小,m和n分别是X的行数和列数。
n=length(X):
%n是X的行数和列数中较大的一个。
reshape(A,m,n):
%返回一个m×n的矩阵,其元素是以列方式从A中获得。
3.数组运算
MATLAB数组的加、减、乘、除和幂运算是对应元素的运算,运算符分别为“+”、“—”、“.*”
“./”和“.^”。
a=3*ones(3,3);b=2*ones(3,3)
c1=a+bc2=a-bc3=a.*bc4=a./bc5=a.^2c6=2.^aa.^b
4.矩阵运算
矩阵运算采样线性代数的运算方式。
MATLAB矩阵的加、减、乘、除和幂运算的运算符分别为“+”、“—”、“*”、“/”、“\”、和“^”。
a=eye
(2)b=[1,2;3,4]c=a*b
a=[12;34]b=[56;78]x=a/bx*b
c=a^3
(四)MATALB的关系运算和逻辑运算
1.关系运算
MATLAB的关系运算符有“<”、“<=”、“>”、“>=”、“==”、“~=”,
用于比较大小相同的二个数组,或比较一个数组和一个标量,返回的结果为0或1。
a=1:
9;b=[1:
3,1:
6]
c=a>5c=b<=2a==ba~=b
2.逻辑运算
MATLAB的逻辑运算符有“&”、“|”、“~”、“xor”(与、或、非、异或)。
a=1:
5;c=~(a>3)
c=(a>2)&(a<=3)
a=[10;01];b=ones
(2);c1=a|b,c2=xor(a,b)
3.关系和逻辑运算函数
all、any、find
a=[01;23]
all(a)
any(a)
a=0:
3
find(a>2)
b=eye(3)
find(b==0)
三、实验内容
1.简单的赋值及运算
在命令窗口输入以下命令,观察每条语句的输出结果,理解每一条语句的含义。
(1)a=10
b=a*10+10^2
(12+2*(8-5))/3^2
c=2*sin(pi/2)+sqrt(9)
n=0:
15
m=0:
2:
10
(2)x=[1,3,5,0,2]
x
(1)
y=[123;456;789]
y(2,3)
y(4)
y(3,:
)
y(3,:
)=[sqrt(9),(4+5)*3/6,-7]
y1=y(1:
2,2:
3),y2=y([1,3],[1,3])
y3=y1(:
),y4=y3’
a=ones(2,2),b=zeros(2,2)
c=[a,b]
(3)A=[135],B=[246]
C=A+B
D=abs(A-2)
E1=A*3
E2=A.*B
E3=B./A
E4=A.^2
(4)a=eye
(2),b=[1,2;3,4]
c1=a*b
c2=a^3
(5)a=1:
9,b=[1:
3,1:
6]
c1=a>5
c2=b<=2
a==b
a~=b
c3=(a>2)&(a<=3)
a=[10;01],b=ones
(2)
c4=xor(a,b)
(6)c=ones(3,2)
[m,n]=size(c)
a=randn(2,3)
n=length(b1)
c1=reshape(b2,3,2)
b3=eye(3)
find(b3==0)
2.练习题
(1)生成一个3×3的均匀分布的矩阵,将其对角线元素的值加3.
(2)计算序列x1=3sin(πn/4)(0≤n≤15)。
(3)生成一个4×5的矩阵,创建由该矩阵第1、3行,第1、3、5列元素构成的矩阵。
(4)计算序列x2=1+2cos(πn/4)(0≤n≤15)。
(5)生成一个3×3的均匀分布的矩阵,求其元素值大于0.5并且小于0.8的元素索引。
[实验题目三]MATLAB的程序结构
一、实验目的
(1)熟悉MATLAB语言的顺序结构、循环结构和分支结构。
(2)掌握MATLAB语言的循环语句、分支语句等使用方法。
二、实验原理(MATLAB的程序结构)
1.顺序结构
2.循环结构
(1)forend循环
这种方式允许一组命令以固定和预定的次数重复,其结构为:
for循环变量=开始值:
增量:
结束值
commands
end
【例3-1】:
fori=1:
10
y(i)=i;
end
y=
12345678910
循环变量可以为数组,每次循环变量是数组的一列。
For循环可以嵌套使用。
【例3-2】:
s=0;
forx=[1,10,100]
s=s+x;
end
s=
111
(2)whileend循环
这种方式循环次数不定,当表达式为真时,执行while和end之间的命令,其结构为:
while表达式
commands
end
【例3-3】:
s=0;n=0;
whiles<100
n=n+1;s=s+n;
end
n=n-1
n=
13
3.分支结构
(1)ifend结构
If逻辑表达式
commands
end
【例3-4】:
n=10;
cost=10;
ifn>8
sum=n*cost*0.95;
end
(2)if-else-end结构
If表达式
表达式为真时的commands1
else
表达式为假时的commands2
end
当程序包含多个选择时,采用以下结构:
If表达式1
表达式1为真时的commands1
elseif表达式2
表达式2为真时的commands2
else
Commands3
end
4、其他流程控制语句
input、break、pause、echo等语句。
三、实验内容
1.阅读并输入实验原理中的例题程序,观察并分析输出结果,理解每一条语句的含义。
2.输入以下命令,观察并分析输出结果,理解每一条语句的含义。
(1)form=1:
3
forn=1:
5
a(m,n)=m+n;
end
end
a
(2)x=1
forn=2:
10
x=x*n;
ifx>=100
break
end
end
x,n
3.练习题
(1)计算S=12+22+32+…302
(2)计算n!
<1000的最大的n值。
[实验题目四]M文件的编写与调试
一、实验目的
(1)熟悉M脚本文件(命令文件)和函数文件的结构。
(2)掌握M脚本文件的编写与调试。
(3)掌握M函数文件的编写与调用。
二、实验原理(M脚本文件和函数文件)
MATLAB作为科学计算软件,不仅具有强大的数值计算、数据可视化功能,而且具有强大的程序设计功能。
通过编写扩展名为.m的M文件,用户可实现各种复杂的功能。
1.M脚本文件(命令文件)
M脚本文件(命令文件)是按用户意图而排列的MATLAB命令集合,通常由正文(实现特定功能)和注释部分(代码说明,不予执行)构成。
文件运行后,所有变量均是全局变量,一直保存在MATLAB工作空间中(除非用clear命令删除)。
用下面的例子来说明M命令文件的编写与运行。
【例4-1】:
显示曲线x(t)=3sin(2πt),t>0
(1)在MATLAB菜单栏或工具栏中点击NewM-file,打开文本编辑器。
(2)输入以下命令:
%program1.mThisismyfirstexample.
t=0:
0.05:
3;%建立时间数组
x=2*sin(2*pi*t);%生成函数
plot(t,x);%以t为横坐标、x为纵坐标作连续信号x(t)的曲线.
title('x(t)=3sin(2πt)');%标注图名
xlabel('t');%标注横坐标
ylabel('x(t)');%标注纵坐标
(3)选File|Save命令或点击“保存图标(save)”,输入文件名program1,将文件保存。
(4)在MATLAB命令窗口输入文件名“program1”(或Debug→Run),程序运行,可观察到波形曲线。
2.M函数文件
M函数文件的第一行以function开始,说明此文件就是一个函数。
函数文件内定义的变量是局部变量,执行完函数文件后,这些变量将被清除。
函数文件形式为:
function[out1,out2…]=funname(in1,in2,…)
functiony=funname(x)
functionfunname(x)
functionfunname
【例4-2】:
编写函数文件,求向量元素的平均值。
(1)打开MATLAB的M文件编辑器,输入以下命令。
functiony=avg(a)
y=sum(a)/length(a);
(2)保存文件avg.m,该文件定义了名为avg的新函数。
(3)在命令窗运行以下命令,求1~100的平均值。
avg(1:
100)
ans=
50.5000
【例4-3】:
编写函数文件stat.m,求向量元素的均值和方差。
function[mean,stdev]=stat(x)
%STATInterestingstatistics
n=length(x);
mean=sum(x)/n;%计算均值
stdev=sqrt(sum((x-mean).^2)/n);%计算方差
或者:
function[mean,stdev]=stat(x)
n=length(x);
mean=avg(x,n);
stdev=sqrt(sum((x-avg(x,n)).^2)/n);
functionmean=avg(x,n)%agvsubfunction
mean=sum(x)/n;
3.函数调用
MATLAB调用函数的常用形式为:
[out1,out2…]=funname(in1,in2,…),调用时各参数出现的顺序要与函数定义时的顺序一致。
函数调用可以嵌套。
【例4-4】:
编写并调用M函数,对给定的实数a,b,正整数n=1,2…10,计算所有(a+b)n和(a-b)n
(1)建立函数文件
function[add,sub]=pow(a,b,n)%pow.m计算(a+b)n和(a-b)n
add=(a+b)^n;
sub=(a-b)^n;
(2)建立调用上述函数的M文件e1.m
a=input('pleaseinputa=');
b=input('pleaseinputb=');
forn=1:
10
[add(n),sub(n)]=pow(a,b,n);
end
add
sub
【例4-5】:
编写时域序列绘图函数,并调用该函数绘制序列x1(n)=cos(πn/8),0≤n≤31。
(1)编写时域序列绘图函数tstem.m
functiontstem(xn,y)%xn为时域序列,y是序列的纵坐标名称(字符型)。
n=0:
length(xn)-1;
stem(n,xn,'.');%绘制以n为横坐标、xn为纵坐标的脉冲杆图(序列图形)。
xlabel('n');ylabel(y);
axis([0,n(end),1.2*min(xn),1.2*max(xn)])%限定图形横纵坐标的范围
(2)调用函数tstem绘制x1(n)=cos(πn/8),0≤n≤31。
%M文件e2.m
n=0:
31;
xn=cos(pi*n/8);%产生时域序列
y=’x1(n)’%序列名称
tstem(xn,y)%调用函数,绘制时域序列波形。
title('序列x1(n)=cos(π*n/8)');%标注图名
4.M文件的调试
程序调试可发现二种错误:
语法错误和逻辑错误(运行错误)。
程序调试二种方法:
直接调试和MATLAB工具调试。
直接调试:
将中间结果显示在命令窗口,查看变量的值;在程序的适当位置加入断点等。
利用调试工具:
文本编辑器中的“Debug”菜单提供了全部调试选项。
三、实验内容
1.阅读并输入实验原理中的例题程序,观察并分析输出结果,理解每一条语句的含义。
2.编写时域序列绘图函数,并调用该函数绘制x2(n)=sin(πn/8),0≤n≤31。
3.编写时域序列绘图函数,并调用该函数绘制x3(n)=cos(πn/16),0≤n≤31。
4.编写并调用M函数,对给定的实数a,b,正整数n=1,2…10,计算所有(a+b)×n和(a-b)×n的值。
[实验题目五]MATLAB的图形绘制
一、实验目的
(1)掌握二维、三维图形的绘制及参数设置的方法。
(2)了解特殊的二维图形的绘制。
二、实验原理
MATLAB作为科学计算软件,不仅具有强大的数值计算功能,其绘图功能也相当强大。
它提供一套功能强大的绘图命令(绘图函数和绘图工具),可以绘制出原始数据的二维、三维图形,并可以对图形进行各种修饰,为计算过程和结果的可视化提供了极好的手段。
(一)MATLAB图形绘制的一般步骤
(1)数据准备
(2)指定图形窗口和子图位置
(3)调用绘图命令绘制图形
(4)设置坐标轴及图形注释
(5)按指定格式保存或导出图形
(二)MATLAB二维图形绘制
基本绘图函数介绍:
1.plot
功能:
按线性比例,在x和y两个方向上绘制二维图形。
调用格式:
plot(x,y);绘制以x为横坐标、y为纵坐标的二维图形。
plot(x,y,‘string’);设置线型、颜色及数据点型。
plot(x1,y1,x2,y2,…);绘制多条曲线。
【例5-1】颜色、数据点型、线型的设置
x=0:
0.1:
10;
y1=sin(x);
y2=cos(x);
plot(x,y1,'r*--',x,y2,'go-')%y1红色,点型为*,线型为虚线;y2绿色,点型为圆,线型为实线。
2.subplot
功能:
在同一图形界面上产生多个绘图区间。
调用格式:
subplot(m,n,i);在同一界面上产生m行n列的子图轴系,在第i个子图位置作图。
3.stem
功能:
绘制二维脉冲杆图(柄图、序列图形)
调用格式:
stem(x,y);绘制以x为横坐标、y为纵坐标的脉冲杆图(序列图形)。
stem(x,y,’.’);stem(x,y,’fill’)
4.title
功能:
在图形上方标注图名
调用格式:
title(‘中文或英文的图名’)
5.xlabel
功能:
在横轴下方标注横坐标
调用格式:
xlabel(‘中文或英文的横坐标’);标注横坐标
6.ylabel
功能:
在纵坐标左侧标注纵坐标
调用格式:
ylabel(‘中文或英文的纵坐标’);标注纵坐标
7.axis
功能:
限定图形坐标的范围。
调用格式:
axis([x1,x2,y1,y2]);x1,x2为横坐标的起止范围,y1,y2为纵坐标的起止范围。
8.grid
功能:
在当前图上加上(或撤销)网格线。
调用格式:
gridon(off)
9.legend
功能:
图形标注(在当前图中添加图例)。
调用格式:
legend(string1,string2,…);legendoff
10.text
功能:
文本注释。
调用格式:
text(x,y,‘string1’);
【例5-2】不同颜色、线型绘图,添加图形标注和文本注释。
x=0:
pi/50:
2*pi;
y1=sin(x);y2=cos(x);
plot(x,y1,'r*--',x,y2,'bo-');
gridon
legend('sin(\alpha)','cos(\alpha)');
text(pi,0,'\leftarrowsin(\alpha)')
title('sin(\alpha)和cos(\alpha)')
xlabel('\alpha');ylabel('sin(\alpha)和cos(\alpha)');
【例5-3】在同一图形窗绘制多个子图。
t=(0:
100)*pi/100;
y1=sin(t);
y2=sin(10*t);
y3=cos(t);
y4=sin(t).*sin(10*t);
subplot(2,2,1);plot(t,y1);axis([0,pi,-1,1]);
subplot(2,2