% 查
%{
matrix(3,2) 矩阵第三行第二列元素
matrix(2,[1,3]) 矩阵第二行第一、三列元素
matrix([1,3],2) 矩阵第一、三行第二列
matrix(1,:) 矩阵第一行的所有列
matrix(:,2) 矩阵第二列的所有行
matrix(:,end) 矩阵最后一列的所有行
matrix(end,:) 矩阵最后一行的所有列
%}
%单个指标访问:按列从第一列到最后一列的所有行第一行到最后一行
%如矩阵是4*4的矩阵时(第二行第一列表示5)<==> matrix(2,1)相当于matrix(5)
%[i,j] = ind2sub(siz, ind) siz矩阵的大小 ind矩阵单个指标的位置
%返回第i行第j列
% 改
% 增加时缺少的用0补充
%{
matrix(2,3) = 9 修改第二行第三列
matrix(1,:) = [1,2,3] 修改第一行的所有列
matrix(1:2,1:2) = nan 修改第一、二行第一、二列 matrix(1:2,1:2) = 5
matrix(1:2,1:2) = [1,2;3,4]
matrix(:,1) = [1;2;3] 修改第一列的所有行
matrix(:,4) = [1;2;3]
%}
%并
%{
mat = []
mat1 = randi([1,10],3,3)
[mat1,matrix] 按行并在一起行要维度相同
[mat1;matrix] 按列并在一起列要维度相同
[mat,mat1]
[mat;mat1]
%}
%矩阵的函数
%{
length(matrix) return行和列的最大值
[rows,columns] = size(matrix)
mat2 = size(matrix) mat2(1) mat2(2)返回行数和列数
numel(matrix) elements sum
reshape(matrix,2,8) 返回改变行列数
flipud(matrix) flip(matrix) 返回行数从下到上交换
fliplr(matrix) 返回列数从右到左交换
rot90(matrix) 矩阵逆时针旋转90
A = [1,2;3,4]; repmat(A,2,3); 矩阵重复2行3列
repelem(A,2,3) 矩阵的元素重复2行3列
diff([1,4,7,8,3]) 第二位减去第一位 [3 3 1 -5]
nan(3,0) 空的 3×0 double 矩阵
nan(0,3) 空的 0×3 double 矩阵
%}
%矩阵的运算
%{
[1,4,7,8,3] * 3 各个元素乘以3
[1,4,7,8,3] + 3 各个元素加3
A = [1,2,3,4,5] B = [6,7,8,9,3]
A.*B 每个对应的元素相乘 A.^B 每个对应的元素给予乘方
A+B 每个对应的元素相加 A-B 每个对应的元素相减
A./B 每个对应的元素相除
%}
%三维数组
%{
m = randi([1,100],3,4)
T(:,:,1) = m
T(:,:,2) = randi([1,100],3,4)
T(:,:,3) = randi([1,100],3,4)
T(:,:,4) = randi([1,100],3,4)
T(:,:,5) = randi([1,100],3,4)
%}
%几个运算函数
%{
m1 = randi([-5,5],[1,4]) 随机整数 m1 = -1 -5 3 -4
abs(m1) ans = 1 5 3 4 (没有返回结果时一般为ans当作返回结果)
sign(m1) ans = -1 -1 1 -1
min(m1) ans = -5
max(m1) ans = 3
sum(m1) ans = -7 vector的每一位相加
prod(m1) ans = -60 vector的每一位相乘
cumsum(m1) ans = -1 -6 -3 -7 详细解释 第一个数不变
第二位数 -1 + -5 = -6 第三位数 -1 + -5 + 3 = -3
第四位数 -1 + -5 + 3 + -4 = -7
cumprod(m1) ans = -1 5 15 -60 详细解释 第一个数不变
第二位数 -1 * -5 = 5 第三位数 -1 * -5 * 3 = 15
第四位数 -1 * -5 * 3 * -4 = -60
cummin(m1) ans = -1 -5 -5 -5 详细解释 第一个数不变
第二位数 -1 > -5 第三位数 3 > -1 > -5
第四位数 3 > -1 > -4 > -5
cummax(m1) ans = -1 -1 3 3 详细解释 第一个数不变
第二位数 -1 > -5 第三位数 3 > -1 > -5
第四位数 3 > -1 > -4 > -5
%}
%{
matrix = randi([-5,5],3,4)
min(matrix) 返回找到一道四行每一列的最小值
max(matrix) 返回找到一道四行每一列的最大值
matrix63 > 0 返回 3×4 logical 数组大于true为1,小于false为0
matrix([matrix > 0]) 返回为1的数
any() 有一个为true就是true
any(matrix > 0) 返回找到一道四行每一列有一个为true则true
all() 全部为true就是true
all(matrix1 > 0) 返回找到一道四行每一列有一个为true则true
find() 返回逻辑true的位置
find(matrix1 > 0) 返回(单个指标访问)位置
find(matrix1 > 0,2,'first') 从第一个开始返回两个true的数
find(matrix1 > 0,2,'last') 从最后一个开始返回两个true的数
%}
% log_true = ones(3,4,'logical') 3×4 logical 数组 注意这个类型
% v1 = [1,2,3,4] v2 = [1,2,3,4]
%all(v1 == v2)
% isequal(v1,v2) isequal(1,1) 判断是否相同(判断向量或矩阵时维度是一定相同)
%矩阵运算(线代知识)
%{
m1 = randi([1,10],3,4)
m2 = randi([1,10],4,3)
m1*m2 第一个矩阵的列数和第二个矩阵的行数相等
det([1,2;3,4]) 计算行列式必须是方针
rank(m1) 矩阵的秩
eig([1,2;3,4]) 矩阵的特征值 必须是方阵
inv([1,2;3,4]) 矩阵的逆 必须是方阵
transpose(m1) 转置
v1 = randi([1,9],[1,3])
v2 = randi([1,9],[1,3])
v1 * v2' 计算内积
cross(v1, v2) 计算叉积
A1 = randi([1,10],4,4)
A2 = randi([1,10],4,4)
A1\A2 inv(A1)*A2 A1/A2 A1*inv(A2)
%}