此文针对第一次接触matlab的同学,总结一些简单matlab应用/语法,因为博主主要用matlab打数学建模竞赛(刚接触- -),所以所有matlab应用主要针对竞赛。博主目前想从事算法、机器学习之类领域,因此深深意识到数学的重要性,因此参加2018美赛来督促自己学(竞)习(保)数(加)学(分),希望能在提高自己的同时,也可以为大家提供帮助~
第一章 Matlab中的数组操作
matlab中的运算和操作是以数组为对象的,
数组又包括:数值数组、字符数组、元胞数组等。
数值数组:(1)n元数值向量(行向量与列向量)
(2)数值矩阵
(3)由数值矩阵构成的元胞数组
几个标点符号的作用:
逗号:用来分开数组中的行元素。(可用空格代替)
分号:用来将矩阵中的行分开。(可用回车键代替)
冒号:相当于文字中的省略号。
中括号:界定数组的首与尾。
一、数组的建立
1.直接输入法
matlab在创立数组时以逗号或空格表示分列,分号或回车表示分行。数组开头“[”、结尾“]”
行数组:如a=[1,2,3,8,-1]
列数组: b=[1;2;3;8;-1] 或a’
矩阵:A= [2,4,1;8:-2:4;2,4,6]
2.通过数组编辑器生成矩阵
步骤:先建立空矩阵a=[], 然后在工作空间(workspace)中点开a进入数 组编辑器,输入元素。
3.用函数创建数组
定步长生成法: x=a:t:b (t步长,省略是为1);
定数线性采样法: x=linspace(a,b,n),a与b是数组的第一个和最后一个元素,n是采样的总点数。
4.元胞数组的创建
元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。
组成元胞数组的元素可以是任何一种数据类型的量,每一个元素也可以具有不同的尺寸,每一个元素的内容也可以完
全不同,元胞数组的元素叫做元胞
建立元胞数组:{ }
a={'matlab',20;ones(2,3),1:10}
'matlab' [ 20]
[2x3 double] [1x10 double]
二,数组的操作
{ } 表示元胞的内容,
()表示指定的元胞。
A(3,:)=[]
删除矩阵A第2列:
A(:,2)=[]
A=A*X;
假如a是一个2*n的矩阵,即两行. b=a(1,:);
[c,pos]=sort(b);%pos为排序后的下标,c为第一行的排序结果;
a(2,:)=a(2,pos);%第二行按照第一行排序的下标对应
a(1,:)=c;%第一行结果重新赋给a 的第一行
以下适用于m*n的矩阵按第一行排序
[ b, pos ] = sort( a( 1, : ) );
a = a( :, pos );
创建稀疏矩阵A,A的(2,3),(4,12),(18,20)元素分别为-5,-3,-8,其余元素为零,A为18×20阶矩阵。
sum(A,2):矩阵A按行求和,返回一个列向量。
max(A):返回由矩阵各列的最大值构成的向量。 max(max(A))用于求整个矩阵的最大值
max(A,B):返回A与B对应元素最大值构成的矩阵
min(A),min(A,B)类似
将b元素作为偏离主对角线的第k条对角生成方阵A 其余都是0
find(A) 找出A的不为0的元素的下标
find(A,k) 找出A的前k个不为0的元素的下标
find(A,k,’last’)找出A的后k个不为0的元素的下标
find(g(A)),其中g(A)是数组A的逻辑表达式,
返回数组A中满足条件g(A)的元素下标。