数据的运算
矩阵相乘A*B
矩阵点乘C = A.*B(A的每个元素与B中对应的元素相乘,Cij = Aij*Bij)
矩阵A.^2,A中每个元素平方
矩阵1./A,将A中每个元素取倒数
矩阵log(A),将A中每个元素进行求对数运算
矩阵exp(A),将A中每个元素,以e为底,以这些元素为幂的运算
矩阵abs(A),将A中每个元素取绝对值
V = [1;2;3],则V+1的结果和V+ones(length(V),1)的结果是一样的
A'表示A的转置
max(a)取向量中最大的元素
>> a = [1 2 3 8 7 6];
>> [val,ind] = max(a)
val = 8
ind = 4
如果A是矩阵,max(A)就是对每一列求最大值
>> A = [1 2;6 3;4 8]
A =
1 2
6 3
4 8
>> [val,ind] = max(A)
val =
6 8
ind =
2 3
对a中每个元素与4比较,1表示真,0表示假
>> a = [1 2 3 8 7 6];
>> a > 4
ans =
0 0 0 1 1 1
找出向量中大于4的元素的序列
>> find(a > 4)
ans =
4 5 6
魔方阵,所有行,列,对角线加起来都相等的矩阵
>> A = magic(3)
A =
8 1 6
3 5 7
4 9 2
r是行号,c是列号
>> [r,c] = find(A>7)
r =
1
3
c =
1
2
sum(a) 把 向量a 中所有元素加起来,sum(A,1)将矩阵每列的元素相加,sum(A,2)将矩阵每行的元素相加,sum(sum(A.*eye(n)))将矩阵对角线的元素相加,副对角线元素相加我们先通过fliplr或flipud对单位对角矩阵进行翻转再计算
prod(a) 把 向量a 中所有元素相乘
floor(a) 是向下取整
ceil(a) 表示向上取整
对A和B逐个元素比较取最大值
>> A = rand(3)
A =
0.36764 0.27279 0.64418
0.53047 0.97042 0.69824
0.31572 0.19123 0.38600
>> B = rand(3)
B =
0.421460 0.690191 0.769081
0.020380 0.662891 0.671919
0.591809 0.902464 0.751770
>> max(A,B)
ans =
0.42146 0.69019 0.76908
0.53047 0.97042 0.69824
0.59181 0.90246 0.75177
max(A,[],1) 这样做会得到 每一列的最大值 这里的1表示 取A矩阵第一个维度的最大值
max(A,[],2) 这将得到每一行的最大值
>> max(A,[],1)
ans =
0.53047 0.97042 0.69824
>> max(A,[],2)
ans =
0.64418
0.97042
0.38600
fliplr 矩阵的左右翻转flipud 矩阵的上下翻转
pinv,矩阵的伪逆,在矩阵不可逆的时候用它
inv,矩阵的逆,在矩阵可逆时用它比用pinv快
参考资料
https://www.coursera.org/learn/machine-learning/