内容源于b站清风数学建模
数学建模清风老师《MATLAB教程新手入门篇》https://www.bilibili.com/video/BV1dN4y1Q7Kt/
目录
1.MATLAB中的向量
1.1向量创建方法
1.2向量元素的引用
1.3向量元素修改和删除
2.MATLAB矩阵操作
2.1矩阵创建方法
2.2矩阵元素的引用
2.3矩阵元素修改和删除
2.4矩阵的拼接和重复
2.5reshape函数
2.6sort函数——对向量或矩阵进行排序
2.7sortrows
2.8flip/fliplr/flipud函数
2.9rot90
3.矩阵的运算
3.1调用函数
3.1.1sum求和函数
3.1.2prod乘积函数
3.1.3cumsum累计和函数
3.1.4diff差分
3.1.5median中位数
编辑3.1.6mode计算众数
3.1.7var计算方差
3.1.8std计算标准差
3.1.9min
3.2算数运算
3.2.1加法
3.2.2减法
3.2.3乘法
3.2.4除法
3.2.5乘方
3.2.6逆矩阵
3.2.7转置
3.3关系运算
3.4逻辑运算
3.4.1运算优先级
3.4.2&&和||
3.4.3利用逻辑值引用矩阵元素
3.4.4all,any和find
3.5集合运算
3.5.1unique函数
3.5.2ismember函数
3.5.3intersect函数——交集、union、setdiff、setxor
3.6线性代数相关函数
3.6.1det行列式 rank秩 trace迹 rref最简型矩阵 inv逆矩阵 transpose转置矩阵
3.6.2triu上三角,tril下三角
练习题
3.6.3 eig计算特征值和特征向量
3.6.4 norm函数
1.MATLAB中的向量
1.1向量创建方法
1.直接输入法
2.冒号法
3.利用MATLAB函数输入
linspace等差数列
linspace(a,b):该命令用来创建一个行向量,向量中的第一个元素为a,最后一个元素为b,形成总数为100个元素的线性间隔的向量
linspace(a,b,n):该命令用来创建一个行向量,向量中的第一个元素为a,最后一个元素为b,形成总数为n个元素的线性间隔的向量
linspace和冒号法的区别:
1.linspace不需要指定步长,MATLAB会根据你给定的元素个数n自动计算出来;而使用冒号法可以自己指定步长
2.linspace生成的向量的最后一个元素一定是b,而使用冒号法a:step:b生成的向量最后一个元素不一定是b
3.循环语句用冒号法;绘制函数图形,linspace得到的x轴范围会更准确,因为linspace最后一个一定是2*pi,而0:0.1:2*pi最后一个元素不一定是2*pi
logspace等比数列
logspace(a,b):创建一个行向量,第一个元素为10^a,最后一个元素为10^b,形成总共50个元素的等比数列
logspace(a,b,n):创建一个行向量,第一个元素为10^a,最后一个元素为10^b,形成总共n个元素的等比数列
1.2向量元素的引用
计算向量元素个数:length/numel
单个元素引用 a(ind) 多个索引:将ind设置为向量
end索引
1.3向量元素修改和删除
a(1)=4 a(1)=[]
2.MATLAB矩阵操作
2.1矩阵创建方法
1.直接输入法
2.函数创建法 zeros、ones、eye、rand、randi、randn(阿楠matlab有)
diag创建对角矩阵或获取矩阵的对角元素(diagonal对角)
输入向量获取矩阵
输入矩阵则获取对角元素
blkdiag创建分块对角矩阵(block diagonal)
2.2矩阵元素的引用
a(row,column)
计算矩阵大小size
1.size(A) 例如A是3x4矩阵 size(A)返回[r,c]=3,4
2.size(A,dim)返回在维度dim上的长度。dim=1表示行,dim=2表示列
size(A,1)行数 size(A,2)列数
length用在矩阵返回行和列较大的值
numel会返回矩阵元素总数
线性索引
A(:) 将A中所有元素按线性索引顺序重构成一个列向量
sub2ind将矩阵下标转换成线性索引
ind = sub2ind(sz,row,col)针对大小为sz的矩阵返回由row和col指定的行列下标的对应线性索引ind
ind2sub线性索引转换为下标
2.3矩阵元素修改和删除
删除只能删除整行或整列
用线性索引删除时,将剩余元素放入到一个向量中
2.4矩阵的拼接和重复
横向拼接[A,B]或者horzcat(A,B)
纵向拼接[A,B]或者vercat(A,B)
2.5reshape函数
按列优先规律重新组织矩阵元素
2.6sort函数——对向量或矩阵进行排序
2.6.1对向量进行排序
sort函数可以有两个返回值
[sort_v,ind]=sort(v)%sort_v是排序后的向量,ind是排序后的向量(即sort_v)中的每个元素在原向量(v)中的索引
v(ind)的结果==sort_v
2.6.2对矩阵排序
sort(A,dim)
(1)sort(A,1)==sort(A)
(2)'descend'降序排列
(3)可以返回两个值,加一个索引ind
2.7sortrows
score = [95 80 85 79;95 67 78 90;95 67 78 75;95 67 64 73;86 85 82 84;86 87 82 88]
sort_score1 = sortrows(score,1)%按第一行升序排列
sort_score = sortrows(score,[1,2,3,4])%第一科成绩相同,比第二科…
降序排列
sort_score = sortrows(score,[1,2,3,4],'descend')
降序加升序
2.8flip/fliplr/flipud函数
2.9rot90
3.矩阵的运算
3.1调用函数
3.1.1sum求和函数
3.1.2prod乘积函数
3.1.3cumsum累计和函数
3.1.4diff差分
3.6mean平均值
3.1.5median中位数
3.1.6mode计算众数
mode函数不能加omitnan
3.1.7var计算方差
可加omitnan
3.1.8std计算标准差
3.1.9min
自动忽略nan
3.2算数运算
3.2.1加法
3.2.2减法
3.2.3乘法
3.2.4除法
3.2.5乘方
3.2.6逆矩阵
A^(-1) or inv(A)
3.2.7转置
英文单引号'
3.3关系运算
3.4逻辑运算
nan和复数不能逻辑运算
logical函数 普通矩阵转换成逻辑矩阵
3.4.1运算优先级
3.4.2&&和||
3.4.3利用逻辑值引用矩阵元素
3.4.4all,any和find
find
3.5集合运算
3.5.1unique函数
矩阵
3.5.2ismember函数
加rows,每一行作为一个整体
3.5.3intersect函数——交集、union、setdiff、setxor
union
3.6线性代数相关函数
3.6.1det行列式 rank秩 trace迹 rref最简型矩阵 inv逆矩阵 transpose转置矩阵
3.6.2triu上三角,tril下三角
练习题
clc,clear all;
n = 4;
num = n*(n-1)/2;%上三角部分个数
A = zeros(n);
A(triu(true(n),1)) = randi([0,9],num,1);%全一上三角随机生成
A = A+A'+diag(randi([0,9],n,1))