1.1矩阵的创建与组合
1.1.1 创建简单矩阵
- matlab的矩阵构建标识符为[],创建一个行向量可以用以下两种方式
row=[E1,E2,E3,…,Em] 元素之间可以用逗号相隔
row=[E1 E2 E3 … Em] 元素之间可以用空格相隔
而行的分隔符则可以用分号;
方括号标识符只能用来创建二维矩阵 - matlab中可以用“初值:步长:终值”的方式创立向量
1.1.2 创建特殊矩阵
- zeros 零矩阵 diag 对角矩阵 ones 所有元素全为1的矩阵 eye单位矩阵
- magic 魔方矩阵 rand 随机产生均匀分布的矩阵 randn 随机产生正态分布的矩阵
- randperm 产生一个由指定整数元素随机分布构成的矩阵
1.1.3 矩阵的合并
- C=[A B]表示将矩阵在水平方向上合并 C=[A;B]表示将矩阵在竖直方向上合并
1.2 矩阵的寻访与赋值
1.2.1 矩阵的标识
- 全下标标识法 A(3,5)
- 单下标标识法 若全下标元素的位置为(a,b),在m*n的二维矩阵中,相应单下标为 c=(b-1)*m+a
sub2ind 可以根据全下标换算出单下标 ind2sub 可以根据单下标换算出全下标 - 逻辑1标识法 用一个基于原矩阵A相对位置的逻辑数组B来对A进行寻访,数组B中每一个ture值也就
表示相对位置的A中的元素可以被寻访
1.2.2 矩阵的寻访
- d=a(1,:) 使用冒号可以寻访全行元素 d=a(:,1) 使用冒号可以寻访全列元素
- f=a( : ) 单下标寻访 按照单下标标识作为一列显示
- g=a(:,[1,3]) 寻访地址可以是向量,以同时寻访多个元素
1.3 进行数组运算的常用函数
1.3.1 Matlab常用基本数学函数
- abs(x) 纯量的绝对值或向量的长度 angle(z)复数z的相角 sqrt(x) 开平方 real/imag(z) 复数z的实/虚部
- conj(z) 共轭复数 round(x) 四舍五入至最近整数 fix(x) 无论正负,舍去小数至最近整数
- floor(x) 地板函数,舍去正小数至最近整数 ceil(x) 天花板函数 加入正小数至最近整数
- rat(x) 将实数x化为分数表示 rats(x)将实数x化为多项分数展开
- sign(x) 符号函数 rem(x,y) 求x除以y的余数
- gcd(x,y) 求最大公因数 lcm(x,y) 求最大公倍数
- pow2(x,y) 2的指数
1.3.2 适用于向量的常用函数
- min(x) 向量x中元素的最小值 mean(x) 平均值 median(x) 中位数
- std(x) 标准差 diff(x) 相邻元素的差 sort(x) 对x的元素进行排序
- norm(x) x的欧式长度 prod(x) x的元素总乘积 cumsum(x) 向量x的累计元素总和
- dot(x,y) 向量x和y的内积 cross(x,y) 向量x和y的外积
1.4 查询矩阵信息
1.4.1 矩阵的形状信息
- length 返回矩阵最长的一维的长度 numel 返回矩阵的元素个数
- ndims 返回矩阵的维数 size 返回矩阵各维的长度
1.4.2 矩阵的数据类型
- isa 查询输入矩阵是否是给定类型 iscell 查询输入矩阵是否是cell数组
- iscellstr 是否是由字符串构成的cell数组 ischar 是否是字符串
- isineger 是否是整数数组 islogical 是否是逻辑数组
1.4.3 矩阵的数据结构
- isempty 查询输入矩阵是否为空 isscalar 查询是否是1x1标量
- issparse 查询是否为稀疏矩阵 isvector 查询是否是向量
1.5 矩阵的重构
1.5.1 矩阵元素的拓展与删除
- A=magic(4) A(6,7)=17 A的原始矩阵并没有(6,7)这个元素,通过对这个位置赋值,A拓展为6x7矩阵
- A=magic(4) A(:,1)=[] 通过将行或者列指定为空矩阵[],即可从矩阵中删除行和列
1.5.2 矩阵的重构
- B=rot90(A) 矩阵B由A逆时针旋转90度得到 B=rot90(A,k) 逆时针旋转k*90度得到
- B=flipud(A) B由A上下翻转所得 B=fiiplr(A) B由A左右翻转所得
- B=reshape(A,m,n) 矩阵B的维数为(mn),mn等于A的行和列之积
- L=tril(A,K) L矩阵第k条对角线及以下的元素取矩阵A的元素,其余为0
- L=tril(A) L矩阵主对角线及以下的元素取矩阵A的元素,其余为0
- U=triu(A,K) U矩阵第k条对角线及以上的元素取矩阵A的元素,其余为0
1.6 稀疏矩阵
1.6.1 稀疏矩阵的存储方式
- Matlab仅存储稀疏矩阵中的非零元素及其对应的位置
- Matlab采用3个内部数组来保存元素为实数的稀疏矩阵,例如有一m行n列的稀疏矩阵A,有nnz个非零元
第一个数组以浮点格式存储所有非零元素,此数组大小为nnz
第二个数组存储非零元素相对应的行号,元素都为整数,也有nnz个元素
第三个数组包含一个整数指针,对应于每一列的开始处,此数组大小为n
1.6.2 稀疏矩阵的创建
-
使用函数s=sparse(A) 可以将A转换为稀疏矩阵,用函数full可以将稀疏矩阵转换为一般矩阵
-
直接创建稀疏矩阵:S=sparse(i,j,s,m,n)
其中i和j都为矢量,分别是矩阵中非零元的行号和列号,s是一个全部元素为非零的矢量,
m为输出的稀疏矩阵的行数,n为列数 -
从对角线元素中创建稀疏矩阵:S=spdiags(B,d,m,n)
用于创建一个大小为m行n列的稀疏矩阵S,其非零元素来自矩阵B中的元素且按对角线排列
d指定B中用于生成稀疏矩阵B的对角线位置 -
从外部文件导入稀疏矩阵
1.7 多维数组
1.7.1 多维数组的创建
- 直接通过“全下标”元素赋值的方式:A(3,3,3)=1
- 由若干同样大小的二维数组组合成多维数组:A(:,:,1)=magic(4);A(:,:,2)=ones(4);
- 由函数ones,zeros,rand,randn等直接创建特殊多维数组:B=rand(3,4,3)
- 借助cat,repmat,reshape等函数构建多维数组:
B=cat(3,ones(2,3),ones(2,3)*2,ones(2,3)*3)
cat指令第一个输入变量填写的数字表示“扩展方向的维号”
1.8 多项式的表达式及其操作
1.8.1 多项式的表达式
- Matlab用一个行向量来表示,此行向量就是将幂指数降序排列之后多项式各项的系数
- p(x)=x^3-2x-5 则 p=[1 0 -2 -5]
1.8.2 多项式行向量的创建方法
- 利用命令P=poly(A)生成多项式系数向量,若A是方阵,P就是该方阵的特征多项式,若A为一个向量,A的元素就被认为是P的根
1.8.3 多项式运算函数
- conv 卷积和多项式乘法 poly 求具有指定根的多项式 polyder 多项式求导 polyeig 多项式本征值
- deconv去卷积和多项式除法 polyfit 多项式拟合 polyint 解析多项式积分 roots多项式的根
全部内容来自《MATLAB从入门到精通》