810 likes | 1.04k Views
第二章 MATLAB 基本操作. 2.1 表达式 2.2 矩阵基础 2.3 矩阵产生和操作 2.4 逻辑和关系运算 2.5 操作符和特殊字符. 2.6 基本矩阵和矩阵操作 2.7 基本数学函数 2.8 逻辑函数. §2.1 Matlab 表达式. matlab 表达式由 变量 , 函数 和 操作符 构成。. §2.1 Matlab 表达式. 一 . 变量 : 由字母,数字和下划线构成。最长 31 个字符,区分大小写字母, A,a 变量完全不同; 特殊变量: matlab 固定变量,可看作关键字,一般包括
E N D
2.1 表达式 • 2.2 矩阵基础 • 2.3 矩阵产生和操作 • 2.4 逻辑和关系运算 • 2.5 操作符和特殊字符
2.6 基本矩阵和矩阵操作 • 2.7 基本数学函数 • 2.8 逻辑函数
§2.1 Matlab表达式 • matlab表达式由变量,函数和操作符构成。
§2.1 Matlab表达式 一. 变量:由字母,数字和下划线构成。最长31个字符,区分大小写字母,A,a变量完全不同; • 特殊变量:matlab固定变量,可看作关键字,一般包括 (1)ans: 系统默认结果变量; (2) eps: 容许误差;在一些需要提供误差的函数时使用; (3)pi : , 3.1416 (4) Inf: 正无穷大,当出现1/0时; (5)NaN:不确定,当出现0/0时。
§2.1 Matlab表达式 二. 数值: 常数及常数矩阵 如:5 ,-39 ,0.025 , 7.8e15 3.0i , -5.1+7.8i ,780+3.2e2j [1 0 0 [1+2i 2+3i 0 1 0 1-2i 4i ] 0 0 1] 等等
§2.1 Matlab表达式 三. 操作符 :包括算术,逻辑,关系,位操作 符 等等 • 算术操作符:加减乘除幂指对 注意:矩阵点乘,点除和不带点的乘除 法的区别。 • 逻辑运算:与,或,非,异或xor 比如相关运算时就常用到异或逻辑。 注意:逻辑运算时,任何非零值均判为“1“
§2.1 Matlab表达式 • 关系操作符:大于,小于,不大于(小于等于),不 小于(大于等于),等于,不等于。 注意:关系运算的结果是0,1构成的矩阵。关系成立结果为1,不成立为0。 等等 • 位操作符:按位与,或 等
§2.1 Matlab表达式 四. 函数:matlab函数包括 (1)matlab内部函数 (2)各种工具箱中m文件提供的大量实 用函数; (3)用户自己增加的函数; 注意:函数的特殊用法 (1)函数的嵌套 x=sqrt(log(z))
§2.1 Matlab表达式 (2) 多输入函数 theta=atah2(y,x) (3) 多输出函数 [v,d] = eig(a) [y,I] = max(x) 注意:有关函数的具体用法,可通过Help命令得到; 如: help eig
§2.1 Matlab表达式 五. 表达式 将变量,数值,函数用操作符连接起来,就构成了表达式,如: a=(1+sqrt(10))/2 b=abs(3+5i); c=sin(exp(-2.3)); 注意:“;”的作用 带;则不显示表达式结果,不带则显示表达式结果。
§2.1 Matlab表达式 本节作业: 一, 求逆阵: [3 2 1 [3 –2 0 -1 3 1 5 0 2 2 1 3 2 3] 1 -2 -3 –2 0 1 2 1] 二,求知特征值和特征向量 1 -1 1 2 3 2 4 2 1 3 3 3 6
§2.2 矩阵基础 • MATLAB矩阵输入。 (1)输入元素列表 例如:a=[1 2 3; 4 5 6; 7 8 9] 又如:b=[1:3; 4:6; 7:9] c=[1: 6 : 0.5] 注意:关于:的使用相当灵活,大家可随着学习的不断深入对:的使用逐步加深灵活。
§2.2 矩阵基础 (2)从外部数据文件读取 load score.dat (3) 利用matlab内部函数产生矩阵 例如:b=eye(3); 单位阵 c= ones(2,5); 全一阵 d=zeros(3,2); 全零阵 e=rand(2,3); 随机阵 (4)用户编写m文件产生矩阵 如:score2.m 则在命令行直接键入score2就可产生score2矩阵
§2.2 矩阵基础 二. 矩阵转置 b=a’ 可应用于行向量转成列向量 • 矩阵元素求和 例:sum(a) 按矩阵列求和。 sum(a’)’按矩阵行求和。 sum(sum(a’)’) 求矩阵总和
§2.2 矩阵基础 四. 矩阵下标 (1)相当重要,灵活,等同于c语言的指针地位 例:b=a(1,2)+a(2,3) b=a(8)+a(4) 注意:matlab是按列存取的。
§2.2 矩阵基础 (2)利用下标修改矩阵元素,更是方便 例:a(2,3) = 15; a(2,1:3) = [5 10 15]; 这时a的第二行变成5 10 15, 其他行不变 也可利用end表示最后一个元素 a(2,1:end)表示矩阵的第二列
§2.2 矩阵基础 (3)访问超出矩阵范围时,产生 Index exceeds matrix dimentions 存储超出矩阵范围时,矩阵自动调节大小,指定位置元素置入,其他没指定数的位置默认为零。 注意:随时调整矩阵大小是以付出执行时间为代价的。
§2.2 矩阵基础 五. 矩阵连接 例:a=[1 2;3 4] b=[a a+5; a-5 zeros(size(a)] 将小矩阵嵌套入大矩阵,作为矩阵分割,实现矩阵连接。
§2.2 矩阵基础 六. 矩阵行列删除 利用空矩阵可从矩阵中删除指定的行或列。 如,要删除第二行 b(2, :)=[ ] 要删除第二列 b(:,2) = [ ] 注意:将矩阵某元素附空值与赋零值完全不同 b(1,2) = [ ]出错! b(1,2) = 0 可以
§2.3 矩阵产生和操作 一. 矩阵产生 矩阵可通过输入每个元素来直接产生 也 可以通过读取由其他软件产生的数据 生。除此之外,还可以由标准M函数产 生矩阵。 例如:要产生5×5的单位阵,可输入 A=eye(5);
§2.3 矩阵产生和操作 要产生15×2的全零阵和全1阵,可输入 c1=zeros(15,2);%产生全零阵 c2=ones(15,2);%产生全一阵 这样很容易产生元素等值的矩阵: c3=8×ones(8,9);
§2.3 矩阵产生和操作 MATLAB提供的rand和randn可分别产生均匀分布和正态分布的随机数。 例如要产生[0,1]之间均匀分布的随机向量R(100×1),可输入R=rand(100,1) 如果要产生[-a,a](a为正数)之间均匀分布的随机数则应输入 R1=a-2×a×rand(100,1) 利用diag函数可产生对角矩阵
§2.3 矩阵产生和操作 二.矩阵操作 矩阵产生后可以通过一些变换函数 变换,如rot90、tril、triu、fliplr等 例如:A=fix(10*rand(2,4)) A= 9 6 8 4 2 4 7 0 B1=tril(A,1),B2=triu(A,1)
§2.3 矩阵产生和操作 B1= 9 6 0 0 2 4 7 0 B2= 0 6 8 4 0 0 7 0 利用reshape函数可将矩阵元素重新排列 例如对上述产生的A,可输入: D=reshape(A,4,2) D= 9 8 2 7 6 4 4 0
§2.3 矩阵产生和操作 注意:矩阵元素按列存储,因此重新排列时其元素按列顺序选取。 另外,利用repmat函数可将小矩阵产生大矩阵,利用cat函数可将矩阵连接起来。
§2.4 逻辑和关系运算 一.逻辑操作符 MATLAB提供了三个逻辑操作符&、|、~,同时又存在三个相应的M文件:and、or、not,这两组的作用相同使用格式略有差异,xor是第四个逻辑运算函数,完成异或操作。 在逻辑操作中,所有输入元素的非零值都当作1处理,例如: x=[23 -5 ;0 0.001] ~x ans=0 0 1 0
§2.4 逻辑和关系运算 二. 关系操作符 MATLAB提供了六种关系操作符,这些操作符与逻辑运算配合使用,可使程序设计更加灵活。 例如:if and(a==1,b>5) …… end 则当a=1且b>5时执行指定的语句。
§2.4 逻辑和关系运算 三.MATLAB还提供了许多测试用的逻辑函数。 1. all函数测定矩阵中是否全为非零元素 例如:a=[1 2;0 4]; b=all(a) b=0 1 c=all(all(a)) c=0
§2.4 逻辑和关系运算 2. any函数测试出矩阵中是否有非零值 a=[1 2 0;4 0 0;0 5 0]; any(a) ans=1 1 0 这说明矩阵a中第1、2列包含有非零值,而第3列不包含非零值。
§2.4 逻辑和关系运算 3. find函数可找出矩阵中的非零元素及其下标 a=zeros(5,20); a(3,7)=0.5; a(4,15)= -0.4; [i,j,v]=find(a) i=3 4 j=7 15 v=0.5000 -0.4000
§2.4 逻辑和关系运算 4.exist函数在装入数据之前对数据文件作检测 if exist(‘sg.dat’) load sg.dat else sg=zeros(30,2) end 当存在sg.dat时直接将数据读入到MATLAB的sg变量中,不存在时将sg初始化成全零矩阵。
§2.4 逻辑和关系运算 5. is*函数可对矩阵进行各种检测,其中isnan函数可从阵列中检测非数值。当阵列中包含有NaN时,则基于这一阵列的函数值也为NaN,因此在数据处理之前,一般应对数据进行分析,删去包含有NaN的测量样本,然后在进行处理。
§2.5操作符和特殊字符 1. 算术运算符 功能:矩阵和阵列的算术运算。 格式:A+B A-B A*B A.*B A/B A./B A\B A.\B A^B A.^B A’ A.’ 以上这些矩阵或阵列的算术运算是MATLAB的基本运算,他们还具有相应的M文件,从而在适当场合可直接调用这些命令来完成,对应的关系见P45 表2.2。
§2.5操作符和特殊字符 2. kron 功能:kronecker张量积。 格式:k=kron(X,Y) k=kron(X,Y)可得到X和Y的kronecker张量积,其结果是由X和Y所有元素可能的积形成的大型阵列,如果X为m×n,Y为p×q则kron(X,Y)为m*p×n*q。
§2.5操作符和特殊字符 3. 冒号(:) 功能:建立向量、阵列的下标或用于迭代 。 冒号使用有两种格式,详见P45表2.3和P46表2.4。
§2.5操作符和特殊字符 4. 特殊字符 功能:特殊字符。 格式:[] ( ) { } =’ . …,;% ! 应该注意有些特殊字符的使用具有等效的M文件函数。如水平串连[A,B,C…]等效于horzcat(A,B,C…)。
§2.5操作符和特殊字符 5. 关系操作符 功能:关系操作运算。 格式:A>B A>=B A==B A<B A<=B A~=B 关系操作符的优先级介于逻辑操作符和算术操作符之间。
§2.5操作符和特殊字符 6. 逻辑操作符 功能:逻辑操作运算。 格式:A&B A|B ~A 注意逻辑操作有相应的M文件:A&B等效于and(A,B),A|B等效于or(A,B), ~A等效为not(A)。
§2.5操作符和特殊字符 7. xor 功能:异或操作。 格式:C=xor(A,B) C=xor(A,B)完成阵列A和B对应元素的异或操作。 如: A=[0 0 pi eps] B=[0 -2 4 1.2] C=xor(A,B) C=0 1 0 1
§2.7 基本数学函数 一.三角函数 sin,sinh 正弦和双曲正弦 asin,asinh 反正弦和反双曲正弦 cos,cosh 余弦和双曲余弦
§2.7 基本数学函数 acos,acosh 反余弦和反双曲余弦 tan,tanh 正切和双曲正切 atan,atanh 反正切和反双曲正切
§2.7 基本数学函数 atan2 四象限反正切 cot,coth 余切和双曲余切 acot,acoth 反余切和反双曲余切 sec,sech 正割和双曲正割
§2.7 基本数学函数 asec,asech 反正割和反双曲正割 csc,csch 余割和双曲余割 acsc,acsch 反余割和反双曲余割 注意:三角函数都是面向阵列中的元 素操作的,其角度的单位是弧度。
§2.7 基本数学函数 二.指数和对数函数 1. exp 指数函数 exp函数是面向阵列元素的操作。 例如:X=[12;-1 -2]; Y=exp(x)
2.7 基本数学函数 2. Log 自然对数 例如:X=[2 1; -1 -2]; Y=log(X) 3.log10 常用对数 格式:Y=log10(X)
2.7 基本数学函数 4.log2 以2为底的对数和将浮点数分解成指数和尾数部分。 [F ,E]=log2(X)可将X表示成二进制形式,F为小数部分,E为2的整数次幂。即 X(i)=F(i)*2^E(i) 例如X=[34.12 657.32; -56.45 0.00345]; [F ,E]=log2(X)
2.7 基本数学函数 5. pow2 2的幂和组合成浮点数 pow2函数是log2的逆函数。 例如: X=pow2(F ,E)
2.7 基本数学函数 6. nextpow2 2的下一个整数幂。 p=nextpow2(A)可得到大于或等于abs(A)的最小2次幂。 例如:p=nextpow2(56) 7. sqrt 平方根 B= sqrt (A)可求出阵列A中每个元素的平方根。