matlab电子教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章Matlab 初步(12课时)
一、初等运算和初等函数(0.5课时)
1、简单指令:(P5/6)
例1.算术运算
a=2^2+(12+2*(7-4))/3^2-2^(1/2) %注意算术运算的运算符
例2. 简单矩阵⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡=987654321A 的 输入。
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] %分行输入
例3.指令的续行输入
S=1–1/2+1/3–1/4+1/5–1/6+1/7 …
-1/8
2、数值、变量和表达式
(1)数值的记述
MATLAB 的数值采用习惯的十进制(或科学计数法)表示,可以带小数点或负号。
(2)变量命名规则
变量名、函数名是对字母大小写敏感的。
变量名的第一个字符必须是英文字母,最多可包含63个字符(英文、数字和下连符)。
(3)MATLAB 默认的预定义变量:(P7/8)
3、有关复数的函数:(P8/9)
real(a) %给出复数a 的实部
imag(a) %给出复数a 的虚部
abs(a) %给出复数a 的模
angle(a) %以弧度为单位给出复数a 的相位角
例4.复数的运算——表达复数i
e z i z i z 63212,21,43π
=+=+=,及计算
321z z z z =。
z1=3+4i %经典教科书的直角坐标表示法
z2=1+2*i %运算符构成的直角坐标表示法
z3=2*exp(i*pi/6) %运算符构成的极坐标表示法
z=z1*z2/z3
例5.复数矩阵的生成与计算(P15/10)
A=[1,3;2,4]-[5,8;6,9]*i
B=[1+5i,2+6i;3+8*i,4+9*i]
C=A*B
例6.求复数矩阵的实部、虚部、模和相角(接例5)
C_real=real(C)
C_imag=imag(C)
C_magnitude=abs(C)
C_phase=angle(C)*180/pi
例7.复数的运算 ——计算-8的3次方根 (P10/11)
(1) 直接计算时,得到的是处于第一象限的方根
a=-8;
r=a^(1/3)
(2) 全部方根的计算
% 先构造一个多项式a r r p -=3)(
p=[1,0,0,-a]; %p 是多项式)(r p 的系数向量
%指令末尾的“英文状态分号”使该指令运行后,不显示结果。
R=roots(p) %求多项式的根
问题1:rrr 给出-8的3个3次方根,如何求一个数的n 次方根?
(3)图形表示
MR=abs(R(1)); %计算复根的模
t=0:pi/20:2*pi; %产生参变量在0到2*pi间的一组采样点
x=MR*sin(t);
y=MR*cos(t);
plot(x,y,'b:'),grid on %画一个半径为R的圆
%注意“英文状态逗号”在不同位置的作用
hold on
plot(R(2),'.','MarkerSize',30,'Color','r') %画第一象限的方根
plot(R([1,3]),'o','MarkerSize',15,'Color','b')%画另两个方根
axis([-3,3,-3,3]),axis square %保证屏幕显示呈真圆
hold off
点评:
●数值计算是Matlab最简单的运算,它格式和符号以及初等
函数与习惯基本相同
●后面还会学习Matlab的符号计算
●数值计算有精度问题。
计算的精度可以由format()函数设
置,但不能超过最小精度eps,这里我们略去这些问题(参
P17/14)。
学习要点:
●变量名的命名规则(与C语言相似)
●注意预定义变量i与pi含义,ans,inf,nan也是预定义变
量。
复习、自学内容(第一章):
1、了解有关表格:表1.4-2, 1.4-3, 1.4-4, 1.5-1, 1.6-1。
2、当前目录、搜索路径及其设置:(P23-25/20-23)
MATLAB的所有(M、MAT、MEX)文件都被存放在一组结构严整的目录树上。
MATLAB把这些目录按优先次序设计为“搜索路径”上的各个节点。
此后,MATLAB工作时,就沿着此搜索路径,从各目录上寻找所需的文件、函数、数据。
MATLAB的基本搜索过程大抵如下:
当用户从指令窗送入一个名为cont的指令后,
●检查MATLAB内存,看cont是不是变量;假如不是变量,则进行下一步。
●检查cont是不是内建函数(Built-in Function);假如不是,再往下执行。
●在当前目录上,检查是否有名为cont的M文件存在;假如不是,再往下执行。
●在MATLAB搜索路径的其他目录中,检查是否有名为cont的M文件存在。
3、工作空间及有关命令:(P28-31/23-29)
4、帮助系统及其使用:(P32)
实习一:1、熟悉MATLAB环境;
2、做例题;
二、Matlab数据及Matlab运算(0.5课时)
1、Matlab数据的特点
矩阵是MATLAB最基本、最重要的数据对象。
单个数据(标量)可以看成是矩阵的特例。
在Matlab中使用变量时不需要说明
变量的数据类型,系统将根据赋给变量的值来确定变量的
数据类型。
2、Matlab数据类型
数值数据:双精度型、单精度数、带符号整数和无符号整数。
字符数据。
结构(Structure)和元胞(或细胞或单元)(Cell)。
多维矩阵和稀疏矩阵(Sparse)。
3、变量和赋值
(1)变量的命名
●在MATLAB中,变量名是以字母开头,后接字母、数字或下
划线的字符序列,最多63个字符。
●在MATLAB中,变量名区分字母的大小写。
MATLAB提供
的标准函数名以及命令名必须用小写字母。
(2)赋值语句
MATLAB赋值语句有两种格式:
①变量=表达式
②表达式
一般情况下,运算结果在命令窗口中显示出来。
如果在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。
在MATLAB语句后面可以加上注释,注释以%开头,后面
是注释的内容。
4、Matlab运算
(1) 算术运算
(a) 基本算术运算:+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)。
(P8/9)
注意:运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。
(b) 点运算:点运算符有.*、./、.\和.^。
两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维数相同。
(c) MATLAB常用数学函数:(P110/48)
注意:数学函数exp( ),abs( ),angle( )的意义和用法。
这样的函数还有很多,如:sqrt(x)—平方根, round(x)—取整数部分, rem(x,y)—求余, gcd(x,y)—最大公约数, log(x), tan(x), sign(x)—符号函数等,它们可查帮助获得。
(2) 关系运算:
MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、= =(等于)、~=(不等于)。
(3)逻辑运算:
MATLAB提供了3种逻辑运算符:&(与)、|(或)和~(非)。
三、矩阵(数组)及其运算:(1课时)
内容:输入矩阵进行矩阵的各种运算,观察运算结果,学习Matlab 的使用方法。
(第3章/第2章)
(一)、矩阵(数组)的创建(P97-102/41-44)
1. 直接输入法:
将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。
例如
A=[1 2 3;4 5 6;7 8 9]
2、冒号生成法:
只生成一维数组(行向量)。
一般格式: e1:e2:e3
例9
x1=1:0.2:5
%创建一维向量x1,步长0.2;1和5为两个终点
A=-4:5
%创建一维向量A,步长1;-4和5为两个终点
3、线性定点法:
只生成一维数组(行向量)。
一般格式:linspace(a,b,n)
linspace(a,b,n)与a:(b-a)/(n-1):b等价。
4、利用MATLAB函数建立矩阵:(P98,101/50)
●几个产生特殊矩阵的函数:zeros、ones、 eye、rand、randn。
●这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为
例进行说明。
其调用格式是:
zeros(m) 产生m×m零矩阵
zeros(m,n) 产生m×n零矩阵。
zeros(size(A)) 产生与矩阵A同样大小的零矩阵
例10.利用MATLAB函数建立矩阵
B=ones(3), B1=ones(3,2) %全1矩阵
C=zeros(3), C1=zeros(3,2) %全零阵
rand('state',0) %将随机数产生器置为初始状态
D=rand(3), D1=rand(3,2)
D2=100*rand(3) %随机矩阵的输入格式
E=eye(3) %单位对角阵
diag(D) %取D的对角元素(D未必是方阵),生成一维数组diag(diag(D)) %以D的主对角线构造对角阵
5、利用M文件建立矩阵:
对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。
例如利用M文件建立MYMAT矩阵。
(1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.
(2)把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。
(3)运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。
6、建立大矩阵
大矩阵可由方括号中的小矩阵建立起来。
例如
A=[1 2 3;4 5 6;7 8 9];
C=[A,eye(size(A)); ones(size(A)),A]
(二)、矩阵的标识与寻访(P103/45)
1. 矩阵元素
●MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。
例
如
A(3,2)=200
●也可以采用矩阵元素的序号来引用矩阵元素。
矩阵元素按列编
号,先第一列,再第二列,依次类推。
以m×n矩阵A为例,矩阵元素A(i,j)的序号为 (j-1)*m+i。
其相互转换关系也可利用sub2ind和ind2sub函数求得(单下标和双下标的转换函数)。
IND = sub2ind(size(A),3,2)
[I,J] = ind2sub(size(A),IND)
2. 子矩阵标识
(1)利用冒号表达式获得子矩阵
①A(i,j) 表示取A矩阵第i行、第j列的元素。
A(:,j) 表示取A矩阵的第j列全部元素;
A(i,:) 表示A矩阵第i行的全部元素;
②A(i:i+m,:) 表示取A矩阵第i~i+m行的全部元素;
A(:,k:k+m) 表示取A矩阵第k~k+m列的全部元素,
A(i:i+m,k:k+m) 表示取A矩阵第i~i+m行内,并在第k~
k+m列中的所有元素。
此外,还可利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。
end表示某一维的末尾元素下标。
例11(P103)
A=zeros(2,6)
A(:)=-3:8
A(2,4)
A(8)
A(:,[1,3])
A([1,2,5,6]')
A(:,4:end)
A(2,1:2:5)=[-1,-3,-5]
B=A([1,2,2,2],[1,3,5] )
(2)逻辑标识法:
例12(P105/45)
A=zeros(2,5) %创建2×5全零数组
A(:)=-4:5 %用一维数组对A赋值,观察赋值的次序
L=abs(A)>3 %用逻辑数组标记大于3的数
islogical(L) %判断L是否为逻辑数组
X=A(L) %取出L中逻辑值为1对应的A阵的元素
例13.矩阵的运算
clear
A=rand(4)
d=det(A) %矩阵的行列式
B=inv(A) %矩阵的逆
D=A*B %矩阵的乘法
C=3.*B %数乘矩阵
D1=A.*B %矩阵的点乘
eig(A) %矩阵的特征值
Td=A' %矩阵A的转置
flipud(A) %上下元素交换
fliplr(A) %左右元素交换
B=reshape(A,1,16) %将A变为一维数组B
C=reshape(B,2,8) %将B变为2×8维数组
(三)、空数组:(P115/63)
某维长度为0或若干维长度均为0的数组。
功能:(a)在没有空数组参与的运算时,计算结果中的“空”可以解释为“所得结果的含义";(b)运用空数组对其他非空数组赋值,可以改变数组的大小,但不能改变数组的维数。
例14
%空数组的创建
a=[ ], b=ones(2,0), c=zeros(2,0), d=eye(2,0), f=rand(2,3,0,4)
%空数组的属性
class(a) %数据类型
isnumeric(a) %是数值型数组吗
isempty(a) %惟一可正确判断数组是否空的指令
which a %a是什么
ndims(a) %数组a的维数
size(a) %数组的大小
%空数组用于子数组的删除和大数组的大小收缩
A=reshape(-4:5,2,5) %创建2×5数组
A(:, 2:3)=[ ] %赋空,使2,3列消失
(四) 关系运算与逻辑运算:(P117/64)
MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、= =(等于)、~=(不等于)。
MATLAB提供了3种逻辑运算符:&(与)、|(或)和~(非)。
例15:关系运算应用——求近似极限,修补图形缺口
t=-2*pi:pi/10:2*pi;
y=sin(t)./t; %在t=0处计算,将产生非数NaN
tt=t+(t==0)*eps; %逻辑数组参与运算,使0元素被一个
“机器0”小数代替
yy=sin(tt)./tt; %用数值可算的sin(eps)/eps近似代替
sin(0)/0极限
subplot(1,2,1),plot(t,y),axis([-7,7,-0.5,1.2]),
xlabel('t'),ylabel('y'),title('残缺图形')
subplot(1,2,2),plot(tt,yy),axis([-7,7,-0.5,1.2])
xlabel('t'),ylabel('yy'),title('正确图形')
例16:逻辑运算应用——
t=linspace(0,3*pi,500);y=sin(t); %产生正弦波
学习好资料欢迎下载
z1=((t<pi)|(t>2*pi)).*y; %获得整流半波
w=(t>pi/3&t<2*pi/3)+(t>7*pi/3&t<8*pi/3);
w_n=~w;
z2=w*sin(pi/3)+w_n.*z1; %获得削顶整流半波
subplot(1,3,1),plot(t,y,':r'),ylabel('y')
subplot(1,3,2),plot(t,z1,':r'),axis([0 10 -1 1])
subplot(1,3,3),plot(t,z2,'-b'),axis([0 10 -1 1])
点评:
●矩阵是一个重要的数据对象,它可视为数值计算的推广。
●矩阵运算是Matlab的一个显著特点,方便,快捷。
●以上只例举了一些常见的矩阵运算,从中可见Matlab矩阵
运算的强大功能。
●所有Matlab的矩阵运算可以在帮助库中查到,查帮助的方
法将在以后介绍。
学习要点:
●注意矩阵的输入方法和输入格式
●注意矩阵元素的标定和提取
●注意矩阵的各种运算符号和意义
练习:
1.所有的实例做一遍。
2.写出三种一维数组的赋值方法。
3. 利用矩阵运算求1+2+3+ (2007)
4.用随机函数输入一个5阶随机矩阵,该随机矩阵的元素是0和3
之间的随机数。
5.设A是一个实对称矩阵。
请给出一个算法来验证A是否是一个
正定矩阵,并举实例加以说明。