2.1矩阵的创建与合并
1、由于MATLAB是基于矩阵运算的,所以用户输入的所有数据均被保存为矩阵或数组。即使是单个变量,如:a=1
whos命令可以查看工作空间内储存的变量的信息
创建矩阵: []这个标识符
相邻元素用逗号或者空格分隔
换行用分号
使用“初值:步长:终值”可以创建向量(即行向量、列向量)
如: a=2:2:20
步长可以是正、负、小数。
2、常见的设置特殊矩阵的函数
zeros 创建所有的元素为0
diag 创建对角阵(参数是矩阵)
ones 创建所有元素为1
eye 创建单位矩阵
magic 创建魔方阵
pascal 创建Pascal矩阵
randn 产生正态分布矩阵
randperm 产生指定整数元素随机分布的矩阵
如:
为了使randn每次生成的东西一样,可以设置随机种子状态。 rand(‘state’,0)
加粗样式
3、矩阵的合并
是指将多个矩阵合并为一个矩阵。用[]标识符。
c=[a b] 是在水平方向上将a b合并
c=[a;b] 是在竖直方向上将a,b合并
需要注意保持维度一致。
即水平合并行数一致,竖直合并列数一致。
2.2 矩阵的寻访与赋值
1、全下标标识法:
即指明行列。如A(2,3),不过这里面的行列是从1开始计算的。
2、单下标标识法:
矩阵的储存模式是从上到下,从左到右串成一竖列,然后,进行编号。
例:m*n的矩阵,某元素的位置是"第a行,第b列",那么对应的单下标就是c=(b-1)+a.
sub2ind:根据全下标换算单下标
ind2sub:根据单下标换算全下标
单下标优点:
写循环时一个变量就够了
将数组赋给一维时方便
3、逻辑1标识法
在寻找矩阵中大于或小于某值的元素问题。
先创建基于矩阵的逻辑数组,即满足条件的地方为true,其他的为假。
再将逻辑数组作为矩阵的标识。
4、举例:
1、a(2,3) 全下标访问
2、a(3) 单下标访问
3、a(:,1) 冒号访问全列
4、a(1,:) 冒号访问全行
5、a(? 单下标形式访问所有
6、a(:,[1,2]) 向量,访问多行或多列
赋值:
a(2,3)=1 单个元素赋值
a(:,1)=1 对列赋值或对行赋值
a(2)=1 单下标标识法赋值
2.3 进行矩阵运算的常用函数
很多,记住两点,第一:是作用于每一个矩阵元素上,第二:会产生一个行列与原数组一样的矩阵。
2.4 查询矩阵信息
1、矩阵形状信息
length 返回矩阵最长的那一维的长度
ndims 返回矩阵的维度
numel 返回矩阵的元素个数
size 返回矩阵各维的长度
3、矩阵的数据结构
isempty 判断矩阵是否为空
isscalar 判断矩阵是否是1*1的标量
issparse 判断输入的矩阵是否为稀疏矩阵
isvector 判断矩阵是否为向量
2.5 数组运算和矩阵运算
在MATLAB中通常矩阵和数组时不区分的。但在运算上两者是有一定区别的。
如下:
2.6 矩阵的重构
1、矩阵元素的扩展
扩展多行多列,指定一个比原矩阵行列都大的地方,赋值,其他地方自动填为0
扩展列:A(:,m)=k,使第m列全部为k(k为常数或向量),扩展行类似。
2、矩阵元素的删除
将指定的行或列设置为空向量[],可以删除行或列。
如A(:,1)=[] %删除第一列
3、矩阵的重构:在tril()与triu()函数中,k指对角线,主对角线k=0