2.1Matlab的数据类型
2.1.1变量与常量
1.变量: 1)优点: 无需事先声明和指定变量类型
2)命名规则: 以字母开头,区分大小写,长度不超过31个字符
3)作用域: 默认为局部变量;全局变量前加global
2.常量: i,j 虚数单位 Realmin 最小正浮点数,2^-1022
pi 圆周率 Realmax 最小正浮点数,2^1023
eps 相对精度10^-52 Inf 无穷大
NaN Not-a-Number
·可以修改这些预定义的常量值,通过“clear+常量名”即可恢复初始值。
2.1.2数字变量
1.若未对表达式设定赋值变量,Matlab会自动赋当前结果给ans变量。
2.输入格式同C语言,输出格式: format
2.1.3字符串
1.字符串: 用单引号相括,行向量->s='abc'
字符数组: 用函数char,列向量->s=char('a','b','c')
·在Matlab中,字符串和字符数组(或矩阵)基本上是等价的。
2.字符串与数值数组的转换:
num2str 数字->字符串 str2num 字符串->数字 %double
int2str 整数->字符串 mat2str 矩阵->字符串
sprintf 格式数据->字符串 sscanf 读字符串
3.字符串操作: 1)strcat
2)strcmp
3)finstr(S1,S2) %在S1串中查找S2串,输出开头坐标向量
4)upper
5)lower
4.字符串执行: eval(字符串)
2.1.4矩阵
2.1.5单元型变量: 一种以任何形式的数组为元素的多维数组。
1.变量定义: 1)用大括号"{}"直接输入
2)用cell函数
2.用{}作下标完全显示该元素,用()作下标显示该元素的压缩形式。
3.可以嵌套,单元型变量可以是单元型变量。
2.1.6结构型变量: 一种将不用数据类型组合起来的数据类型。
1.变量定义: 1)用点符号"."直接输入
2)用struct函数:
结构型变量名=struct('属性名1',属性值1,'属性名2',属性值2,...)
2.用指针方式访问属性,当属性多于一个时键入变量名不能完全显示,只显示各属性名。
3.可以嵌套,结构型变量可以是结构型变量。
2.2向量及其运算
2.2.1向量的生成
1.直接输入向量,使用中括号"[]"
2.用冒号表达式: x=x0:step:xn
3.线性等分向量的生成: y=linspace(x0,x99) %默认n=100
y=linspace(x0,xn-1,n)
对数等分向量的生成: y=logspace(x0,x49) %默认n=50
y=logspace(x0,xn-1,n)
2.2.2向量的运算
1.点乘: dot(a,b) %默认dim=1
dot(a,b,dim)
2.叉乘: cross(a,b) %a和b必须是三维向量(大于3就取前三维)
cross(a,b,dim) %a和b必须同维且size(a,dim)=size(b,dim)=3
2.3矩阵及其运算
2.3.1矩阵的生成
1.用"[]"直接输入
2.用M文件输入 %通常输入大矩阵
2.3.2矩阵的基本数学运算
1.矩阵的加减法
2.矩阵的乘法
·A的列数和B的行数相同时,A和B才可以相乘
3.矩阵的除法
1)左除"\" %效果好些
2)右除"/"
4.矩阵与常数的运算
·数除时,常数通常只能做除数。
5.矩阵的逆运算: inv函数
6.矩阵的行列式运算: det函数
7.矩阵的幂运算: ^
8.矩阵的指数运算: expm函数
1)expm1: Pade近似
2)expm2: Tayor级数
3)expm3: 特征值法
9.矩阵的对数运算: logm函数
10.矩阵的开方运算: sqrtm函数
2.3.3矩阵的基本函数运算
1.特征值函数
1)[V,D]=eig(A)
2)[V,D]=eigs(A) %迭代法
2.奇异值函数
1)[U,S,V]=svd(A)
2)[U,S,V]=svds(A)
3.条件数函数
1)cond %矩阵的条件数的值
2)condest %矩阵的1范数条件数的值
3)rcond %矩阵的条件数的倒数值
4.特征值的条件数
condeig(A)
[V,D,s]=condeig(A) %等价于[V,D]=eig(A), s=condeig(A)
5.范数函数
1)norm
2)normest %矩阵2范数的估计值
6.秩函数: rank
7.迹函数: trace
8.零空间函数
9.正交空间函数: orth
10.伪逆函数: pinv
11.通用函数形式: funm(A,'funname') %funm(a,'log')==logm(a) funm(a,'sqrt') == sqrtm(a)
2.3.4矩阵的分解函数
1.特征值分解
2.复数特征值对角阵与实数块特征值对角阵的转化
3.奇异值分解
4.LU分解: lu
2.3.5特殊矩阵
1.空阵: (可以缩维)
2.全0阵: zeros
3.单位阵: eye
4.全1阵: ones
5.随机阵: rand
randn %正态随机阵
2.3.6矩阵的特殊操作
1.变维: 1)":"符号表达式 %只能在2矩阵间实现变维,而须预先定义两者的维数
%a=[1:12];c=zeros(3,4);c(:)=a(:);
2)reshape(X,M,N,P,...)
2.转向: 1)旋转: rot90(A) %逆时针旋转90度
rot90(A,K) %逆时针旋转(90*K)度
2)翻转: fliplr(A) %左右翻转
flipud(A) %上下翻转
flipdim(A,dim) %第dim维翻转
3.抽取: 1)对角元素抽取: diag(X) %diag(X,0)
diag(X,k) %k为正为上方第k条对角线,k为0为主对角线,k为负为下方第k条对角线
2)上三角矩阵抽取: triu(X) %triu(X,0)
triu(X,k) %X的第k条对角线的上部分
3)下三角矩阵抽取: tril(X) %tril(X,0)
tril(X,k) %X的第k条对角线的下部分
4.扩展: X(m1:m2,n1:n2)=A %sizeof(A)=(m2-m1+1)*(n2-n1+1),其它元素为0
2.4数组及其运算
2.4.1数组的基本运算
1.数组和常数的加减预算可加可不加"."号,加"."号一定要把常数写在前面。
2.矩阵与常数间的除法,常数只能做除数,数组没有这个限制。
3.数组的指数运算、对数运算和开方运算相对矩阵来说都有了简化,分别为exp、log和sqrt
2.4.2数组的函数运算: funm(A,'funname') %funname为常用的函数名,如sin
2.4.3数组的逻辑运算
1.基本运算: 优先级关系先后顺序:比较运算->算术运算->逻辑与或非运算
2.函数运算: 1)all %全部为0为真
2)any %存在不为0为真
3)find %寻找非0坐标
find(逻辑表达式) %寻找逻辑表达式为真的坐标
2.5多项式运算
2.5.1多项式的表达方法
1.行向量: P=[a0,a1,...,an](') %P(x)=a0x^n+a1x^n-1+...+an(降幂排列)
poly2sym(P) %ans=a0x^n+a1x^n-1+...+an
2.特征多项式输入法: 求矩阵的特征多项式poly(A) %首项系数一定为1
%n阶特征矩阵一定产生n次多项式
3.由根创建多项式: poly(向量)
2.5.2多项式运算
1.求值: 1)数组为单位: polyval(P,X)
2)矩阵为单位: polyvalm(P,X) %Y=P(1)*X^N+P(2)*X^(N-1)+...+ P(N)*X+P(N+1)*I
2.求根: 1)roots
2)先求伴随矩阵,再求其特征值:A=compan(P); R=eig(A)
3.乘除法: 1)乘法: conv(P,D) %P,D不允许poly2sym后 %向量的卷积
2)除法: deconv(PD,D) %PD,D不允许poly2sym后 %向量的解卷
4.微分: polyder(P) %P不允许poly2sym后,要sym2poly才行
5.拟合: 1)由矩阵的除法求解超定方程
2)polyfit(X,Y,n) %X,Y为拟合数据,n为拟合多项式的阶数