MATLAB_矩阵与数组初识(矩阵的创建、合并、寻访、赋值、随机数种子、多维矩阵(cat,repmat,reshape)、稀疏矩阵)
·
1.矩阵的创建
在MATLAB中一般情况下矩阵就是数组
特殊:
当只有一行或一列的矩阵称为向量
只有一个元素称为标量
row=[E1,E2;E3…En]
eg:
初值:步长:终值创建向量
注意
- 步长可以为正数,负数,小数。不指定步长默认为1
- 如果指定区间不是步长的整数倍时,为不超过终值的最近数
创建特殊矩阵函数
函数名称 | 函数功能 | 函数名称 | 函数功能 |
---|---|---|---|
zeros | 创建所有元素为0的矩阵 | pascal | 创建PASCAL矩阵 |
diag | 创建对角矩阵 | rand | 随机产生均匀分布的矩阵 |
ones | 创建所有元素为1的矩阵 | randn | 随机产生正态分布的矩阵 |
eye | 创建单位矩阵 | randperm | 产生一个由指定整数元素随机分布构成的矩阵 |
注意:每次随机矩阵不同因为其随机数种子不同,设置随机数种子方法为
rand(‘state’,0);
2.矩阵的合并
注意:如果是水平合并,两个矩阵的行数必须相同;竖直合并两个列数列数必须相同
- C=[A B]表示将矩阵水平方向合到一起
- C=[A;B]表示将矩阵竖直方向合到一起
3.矩阵的寻访与赋值
矩阵的标识
- 全下标法A(n1,n2);(注意:MatLab矩阵第一个元素下标为1,1)
- 单下标标识法A(n1);
MatLab中储存矩阵的形式是从左向右开始,把每一列和成一列
如果M*N的矩阵全下标标识的位置的行列为(a,b)
则n1=(b-1)*M+a
sub2ind | 根据全下标换算为单下标 |
---|---|
ind2sub | 根据单下标换算为全小标 |
- 逻辑1标识法
这种方法是利用矩阵A相对位置的逻辑数组B来对矩阵A进行寻访,数组B每一个1(true)值代表A中这个位置可以寻访。多个元素只需要将符合元素的位置设置为1即可
- 在MatLab中:代表全部元素
矩阵的赋值
根据上面的矩阵标识来给矩阵赋值
4.多维矩阵
创建方法:
- 通过全下标赋值的方法创建多维数组
- 二维数组合成多维数组
- 函数ones、zeros、rand、randn函数创建特殊的多维矩阵
- 借助cat、repmat、reshape等函数创建多维数组
cat函数用法
cat函数第一个参数为扩展方向的维度号,eg:3表示向三维扩展
二维方向扩展的矩阵
一维方向扩展的矩阵
repmat函数用法
repmap函数第一个参数是构成多维数组的源数组,第二参数是指定各维方向扩展的源数组个数。
[1,2,3]代表行方向扩展1次,列方向扩展2次,页方向扩展3次(3个二维数组)
reshape函数用法
reshape函数第一个参数是源数组,后面的参数的意思为数组的行数列数和页数。
需要注意的是将要生成的数组的个数必须与原数组相同。
5.稀疏矩阵
MatLab中稀疏矩阵仅储存非0元素及其对应位置,其他位置在访问的时候默认用0填充。节省空间
稀疏矩阵的建立
- 一般数组转化为稀疏矩阵sparse函数
- 直接创建稀疏矩阵
前两个变量是元素在矩阵中排列的位置坐标,第三个输入变量为对应位置的值
(1,3)为1;(3,1)为2等等。
- 从对角线元素中创建稀疏矩阵
函数spdiags(B,d,m,n)创建一个m行n列的稀疏矩阵,其非零元素来自矩阵B中的列元素且按照对角线排列,参数d用来指定对角线的位置,主对角线的d为0,向上移动编号+1,向下移动编号-1。
更多推荐
已为社区贡献2条内容
所有评论(0)