写在前面:记不清的时候直接查help xxx
1.max(a)/min(a)
若a为矩阵,则会默认输出矩阵每一列的最大/小值
可用max(max(A))求矩阵内最大元素,也可以用先将A变列向量:A(:) 然后max(A(:))
另有用法,取两个维度相同的矩阵 m*n
max(B, C)会输出一个m*n选取两个矩阵中相同位置较大元素作为新元素的矩阵。
另:max(B, C, D)会报错
max(A, [], 1)会得到每一列最大值组成的行向量,1的意思是从A的第一维度来取值。(1换2相反)
2.ind:取下标(这里只是一个固定变量名)
例子:关于吴恩达5-3中预定义a = [1 15 2 0.5]后取val = max(a)
[val,ind]= max(A) 输出为 (经验证,此处val可以不实现赋值,ind也可以用任意变量名替换)
val = 15
ind = 2
(经验证,若a为矩阵,则相同输出语句会输出每一列的最大值以及它在每一列的位置)
如:A = [1 2 3; 4 5 6]
>> [val, ind] = max(A)
val =
4 5 6
ind =
2 2 2
探究:
>> ind(max(a))
未定义与 'double' 类型的输入参数相对应的函数
'ind'。
>> [15, ind] = max(a)
错误: 不支持将函数输出赋给此表达式。
>> [max(a), ind]
函数或变量 'ind' 无法识别。
>> [max(a), ind] = 15
输出参数太多。
>> [max(a), ind] = max(a)
数组索引必须为正整数或逻辑值。
3.find
用法
例1(向量中):
a = [1 15 2 0.5]
find(a < 3)
输出
ans =
1 3 4
find(max(a))
输出
ans =
1
例2(矩阵中):(A是4中例子的函数magic(3))
需要给出两个列向量分别去储存行和列
[r, c] = find(A >= 7)
r =
1
3
2
c =
1
2
3
4.magic(机器学习中不常用)
生成“幻方矩阵”(经数学运算后得到的行列对角线加起来相同的矩阵)
(matlab是按照固定算法生成的,因此每次得到的幻方矩阵是同一个)
例子:
A = magic(3)
输出
A =
8 1 6
3 5 7
4 9 2
5.sum/prod函数
(矩阵时得列和,列积)
sum(A,1)得一个行向量记录A的列和(1换2相反)
6.floor/cell函数:floor对元素逐个向下取整,cell向上
7.rand函数:生成元素在0,1随机生成的数表
如rand(3,2) rand(3)
8.eye
9.'.运算’
A = magic(9)
可求出主对角线的元素和:sum(sum(A.*eye(9)))
副对角线的元素和:sum(sum(A.*fliupd(eye(9))))
10.flipud表示使矩阵垂直翻转
11.for
可以
for i = 1:10
也可以
indices = 1: 10
for i = indices这样用
12.while
while true
13.cell用{ }