最近准备研究生毕业论文了,要用matlab处理大量的数据,这里将自己学习matlab过程中的一些笔记整理在这里。
在命令提示符后面输入matlab命令并按回车键,matlab就会执行命令并将结果显示在后面。【注意分号的使用】 如果一行式子太长的话,可以使用续行符,就是英文的三个点:… 如上图所示,注意续行符跟式子之间要有一个空格,不然会报错
【3】当前文件夹窗口 为了方便管理文件,可以将文件夹设置为当前文件夹,那么在命令行的操作都在当前文件夹下执行 如何设置当前文件夹呢? 1,在当前文件夹区域或者当前文件夹路径【路径可以修改】,自己选择某文件夹为当前文件夹。 2,使用cd命令。这个要注意,一定要先建立文件夹,再用cd命令设置为当前文件夹。 【4】工作区窗口 工作区也称为工作空间,它是matlab用于存储各种变量和结果的内存空间,工作区窗口可用于变量的显示和操作
例如在命令窗口创建两个变量,同时会在工作区以表格形式显示变量 同时也能在工作区对变量进行编辑、保存等操作 【5】MATLAB的搜索路径 搜索顺序:变量–内部函数–程序文件。 如何设置文件搜索路径呢 1,用path命令设置文件夹搜索路径。例如:>>path(path,‘e:\work’) 2,用对话框设置文件搜索路径。 通过这两种路径,将自己的工作文件夹纳入到matlab的搜索文件路径中,matlab就能直接搜索到你的工作文件夹下面的文件了。
常用数学函数: 1,函数的调用格式为:函数名(函数自变量的值) 函数的自变量规定为矩阵变量,当然也可以是标量,标量本身是矩阵的一种特例。函数在运算时是将函数逐项作用于矩阵的每个元素上,所以最后运算的结果就是一个与自变量同型的矩阵。 2,常用函数的应用 (1)三角函数有以弧度为单位的函数和以角为单位的函数。如果是以角为单位的函数,就在函数名后面加“d”,以示区分。 (2)abs函数可以求实数的绝对值、复数的模、字符串的ASCll码值。(3)用于取整的函数有以下几种:
- fix:固定取靠近0的那个整数,就是舍去小数取整。
- floor:向下取整,取小于等于这个数的第一个整数。
- ceil:向上取整,取大于等于这个数的第一个整数。
- round:按照四舍五入的规则取整
4,函数应用举例。 具体程序如下图所示 例子2:求1到100区间的所有素数。 提示:matlab提供了一个判断n是否为素数的函数isprime(n),当n是素数时返回1,否则返回0。 代码如下所示:
>> x=1:100;>> k=isprime(x);>> k1=find(k);>> p=x(k1)p =1 至 8 列2 3 5 7 11 13 17 199 至 16 列23 29 31 37 41 43 47 5317 至 24 列59 61 67 71 73 79 83 8925 列97
第一条命令生成1到100所有数字组成的整数向量x,第二条调用isprime函数生成k向量,k向量中的元素要么为1,要么为0,取决于x向量对应数字是否为素数,第三条调用find函数生成k1向量,k1向量中的元素为k向量中非0元素的序号,也就是x向量中素数的序号,第四条命令输出x中的所有素数。
- 变量及其操作 计算机所处理的数据,都是存储在内存单元中的,而每个内存单元,都有一个唯一的地址,程序就是通过这个地址来访问内存单元的。在高级语言中,只需要给每个内存单元取一个名字,然后通过这个名字就能够访问每个内存单元了。 (1)变量与赋值语句 变量的本质就是内存单元的一个抽象。在matlab中,变量名是以字母开头,后接字母、数字或者下划线的字符序列,最多63个字符。 变量名区分字母的大小写,并且标准函数名以及命令名必须用小写字母。 赋值语句有两种格式:变量=表达式,表达式。如果在表达式后面加上分号,那么仅仅执行赋值操作, 不会显示运算后变量的结果。 例题: (2)预定义变量 预定义变量是由系统本身定义的变量。这里举几个例子: (3)变量的管理
- 内存变量的删除与修改:除了可以在工作区窗口用鼠标选中变量,右键直接修改外,还可以用命令的形式修改
- 内存变量文件:用于保存matlab工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件。
MATLAB矩阵的表示 矩阵是matlab最基本的数据对象,matlab的大部分运算或者是命令都是在矩阵运算的意义下进行的,在matlab中,矩阵的使用非常灵活。不需要对矩阵的类型和维数进行说明,就会根据你所输入的内容,自动进行设置。 1,矩阵的建立有以下方法, (1)直接输入法:利用直接输入法建立矩阵:将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用逗号或者空格分隔,不同行的元素之间用分号分隔。(2)利用已经建立好的矩阵建立更大的矩阵:一个大矩阵可以由已经建立好的小矩阵拼接而成。 (3)可以用实部矩阵和虚部矩阵构成复数矩阵: (4)冒号表达式 向量是矩阵的特殊类型,在matlab中,可以利用冒号表达式产生行向量,格式:e1:e2:e3,其中e1为初始值,e2为步长,e3为终止值。步长可以省略,默认值为1。 还可以用linspace函数产生行向量,格式:linspace(a,b,n),a是生成向量的第一个元素,b是最后一个元素,n是元素总数。n省略时,默认为100。 2,结构矩阵和单元矩阵 (1)结构矩阵 在实际应用中,经常会遇到由多种数据类型组成的数据实体,例如一个学生的数据就包括了姓名,性别,学号等数据项,这些不同类型的数据项是相互联系的,如果分开来表示,就无法体现数据的整体。结构数据类型可以把一组数据类型不同而逻辑上又相互关联的数据组成一个有机的整体,其中每个数据都构成了这个结构数据的成员,由结构数据构成的矩阵就叫做结构矩阵,结构矩阵中的每个元素就是结构数据类型。 建立结构矩阵,可以采用给结构矩阵的成员赋值的方法来实现。 格式:结构矩阵元素.成员名=表达式 例如要建立含有三个元素的结构矩阵a, (2)单元矩阵 建立单元矩阵和一般矩阵相似,直接输入就可以了,只是单元矩阵要用大括号括起来。
矩阵元素的引用 在很多情况下,我们都需要对矩阵下的元素进行操作,那么矩阵元素的引用就变得很重要了 【1】,矩阵元素的引用方式: 1,通过下标来引用矩阵元素,下标必须为正整数,而且要用圆括号括起来。例如A(3,2)表示A矩阵第三行第二列的元素。给这个元素赋值200:A(3,2)=200。如果给出的下标大于原来矩阵的行列数,那么结果将自动扩展原矩阵的行列数,扩展后并没有赋值的元素默认为0,例如: 2,通过序号来引用 在matlab中,矩阵元素按列存储,就是首先存储矩阵的第一列元素,然后是第二列…一直到矩阵的最后一列元素。矩阵元素的序号就是矩阵元素在内存中的排列顺序。 序号与下标是一一对应的,以m*n矩阵A为例子,矩阵元素A(i,j)的序号为(j-1)*m+i。 矩阵元素的序号与下标可以利用sub2ind和ind2sub函数实现相互转换。 sub2ind函数:将矩阵中指定元素的行、列下标转换成存储的序号。调用格式为:D=sub2ind(S,I,J)。S表示要转换的矩阵的行数和列数组成的向量,通常用size函数来获取,I表示要转换矩阵元素的行下标,J表示要转换矩阵元素的列下标。 ind2sub函数:将矩阵元的序号转换成对应的下标,其调用格式为:[I,J]=ind2sub(S,D)。S表示要转换的矩阵的行数和列数组成的向量,D是序号。
冒号表达式获得子矩阵: 举例子:
end运算符:表示某一维的末尾元素下标。 可以利用空矩阵来删除矩阵的元素。 如果要将某些矩阵元素删除,将这些元素赋值为空矩阵即可。 还可以不改变元素总数的情况下,改变矩阵的形状。 reshape(A,m,n):在矩阵总元素保持不变的情况下,将矩阵A重新排成m*n的二维矩阵。 注意:reshape函数只是改变原矩阵的行数和列数,但并不改变原矩阵元素个数及其存储顺序。 还可以这样使用:A(:):将矩阵A的每一个元素堆叠起来,成为一个列向量。
MATLAB基本运算 matlab基本运算包括算术运算、关系运算和逻辑运算。 1,算术运算 基本算术运算符:+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)。matlab的运算都是在矩阵意义下进行的,单个数据的算术运算只是矩阵运算的一种特例。 加减运算:若两矩阵同型,则运算是两矩阵的相应元素相加减。不同型时将会报错。一个标量也可以和矩阵进行加减运算,这时把标量和矩阵的每一个元素进行加减运算。 乘法运算:矩阵A和矩阵B进行乘法运算,要求A的列数和B的行数相等,此时则称A、B矩阵是可乘的,或称A和B矩阵维数和大小相容。如果A和B矩阵维数或大小不相容,则报错。 除法运算:在matlab中,有两种矩阵除法运算:右除和左除。如果A矩阵是非奇异方阵,则B/A等效于B*inv(A),A\B等效于inv(A)*B。对于矩阵来说,右除和左除表示两种不同的除数矩阵和被除数矩阵关系。 乘方运算:一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。 matlab中有一种特殊的运算,叫做点运算,就是在基本运算符之前加一个点。点运算符:.*、./、.\和.^。两个矩阵进行点运算是指他们的对应元素进行相关运算,要求;两矩阵同型。 点运算是matlab很有特色的一个运算符,在实际应用中起着很重要的作用。 2,关系运算 基本关系运算符:<(小于)、(大于)、>=(大于等于)、==(等于)、~=(不等于)。 当两个比较量是标量时,直接比较两个数的大小。若关系成立,关系表达式的结果为1,否则为0。 当参与比较的量是两个同型矩阵时,比较的是对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或0组成。 当参与比较的一个是标量,一个是矩阵时,则把标量与矩阵的每个元素按标量关系运算规则逐个进行比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或0组成。 例题: 3,逻辑运算 基本逻辑运算符:&(与)、|(或)和~(非)。 在算术运算、关系运算和逻辑运算中,算术运算的优先级最高,逻辑运算优先级最低,但逻辑非运算是单目运算,它的优先级比双目运算要高。 当参与逻辑运算的是两个同型矩阵时,比较的是对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或0组成。 当参与逻辑运算的一个是标量,一个是矩阵时,则把标量与矩阵的每个元素按标量关系运算规则逐个进行比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或0组成。 例题:
字符串处理 matlab中还有一种字符型数据,也叫做字符串数据,字符串是用单引号括起来的字符序列 若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。 还可以建立多行字符串,形成字符串矩阵 例题应用: matlab里面有一些常用的字符串函数: 字符串也可以进行比较,字符串的比较有两种方法,利用关系运算符或字符串比较函数。 字符串比较函数: 看看例子:
字符串的查找替换 例子: