mooc刘卫国老师matlab第十二版学习笔记 (专题一)

目录

一、matlab基础知识

1.1 ,matlab系统环境(略)

1.2  matlab数值数据

1.2.1数值数据类型分类

整型

浮点型        

复数型

1.2.2数值数据的输出格式

1.2.3常用数学函数 

1.3 变量及其操作

1.3.1变量与赋值语句

1.3.2预定义变量

1.3.3变量的管理

1.4 matlab矩阵的表示

1.4.1 矩阵的建立

1.4.2冒号表达式

1.4.3结构矩阵和单元矩阵

1.5  矩阵元素的引用

1.5.1  矩阵元素的引用方式

1.5.2  利用冒号表达式获得子矩阵

1.5.3  利用空矩阵删除矩阵元素

1.5.4  改变矩阵形状

1.6 MATLAB基本运算

1.6.1算数运算

1.6.2关系运算

1.6.3逻辑运算

1.7 字符串处理

1.7.1 字符串的表示

1.7.2 字符串的操作

专题一总结


一、matlab基础知识

1.1 ,matlab系统环境(略)

1.2  matlab数值数据

1.2.1数值数据类型分类

          (1) 数值数据类型的分类

  • 整型

        整型分为无符号整数和带符号整数,其中

        无符号整数分为无符号8位整数、无符号16位整数、无符号32位整数和无符号64位整数

        带符号整数分为带符号8位整数、带符号16位整数、带符号32位整数和带符号64位整数。

值的范围转换函数内存   
有符号8位整数-2^7~2^7-1int81字节
有符号16位整数-2^15~2^15-1int162字节
有符号32位整数-2^31~2^31-1int324字节
有符号64位整数-2^63~2^63-1int648字节
无符号8位整数0~2^8-1unit81字节
无符号16位整数0~2^16-1unit162字节
无符号32位整数0~2^32-1unit324字节
无符号64位整数0~2^64-1unit648字节

   

    以int8和uint8为例:

        将129通过int8函数转换结果位127,这是因为int8最大值为127(可以通过intmax/intmin查看取值范围,如下图)

  • 浮点型        

        浮点型数据分为单精度型(single)和双精度型(double),单精度型实数在内存中占用4字节,二双精度型实数占用8字节,所以双精度型实数精度更高。

        matlab默认的数据类型是双精度型。

        single函数可以将其他类型函数转化成单精度型;

        double函数可以将其他类型函数转化为双精度型。

  • 复数型

        复型数据包括实部和虚部,实部和虚部默认为双精度型,虚数用单位i/j表示

        real 函数:求复数的实部

        imag函数:求复数的虚部

1.2.2数值数据的输出格式

format命令格式:format+格式符,不同格式符使输出数据不同

(注意:format格式只影响数据的输出格式,不影响数据的计算和储存)

1.2.3常用数学函数 

  • 函数的调用格式

        函数名(函数自变量的值)

        函数的自变量规定为矩阵变量,也可以是标量,标量本身也是矩阵的一种特例。

        函数在运算时是将函数逐项作用与矩阵的每一个元素上,所以最后运算的结果就是一个与自变量同型的矩阵。

  • 常用函数的应用

        (1)三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为函数就在函数名后加d,以示区别。

        (2)abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。

         (3)用于取整的函数有fix、floor、ceil、round。

        round函数是按照四舍五入的方法来取整数;

        ceil函数是向上取整数,取大于等于这个数的第一个整数;

        floor函数是向下取整数,取小于等于这个数的第一个整数;

        fix函数是取靠近0的那个书,即舍去小数取整。

        (4)函数应用举例

        分别求一个三位数的百位数、十位数、个位数

        求[1:100] 间的所有素数


1.3 变量及其操作

1.3.1变量与赋值语句

        变量本质上是内存单元的一个抽象。在matlab中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符,并且变量名区分大小写,其中标准函数名以及命令名一般用小写字母。

        赋值语句有两种格式:

  •  变量=表达式
  • 表达式

        将表达式的值赋给matlab预定义变量ans,变量结果会在命令行窗口显现出来。如果在赋值语句后面加分号,则matlab仅仅执行赋值操作,不会再显示运算后变量的结果

         列子:

       

 

         其中,abs函数是matlab绝对值函数,abs(x-y)表示的是| x- y |。

         

1.3.2预定义变量

        预定义变量在matlab空间中驻留,由系统本身定义的变量

  • ans 是默认赋值变量
  • i 和 j 代表虚数的单位
  • pi 代表圆周率
  • NaN 代表非数(在绘图时,如果想裁掉一部分,可以把裁掉的部分坐标数据设定成非数)

        预定义变量都有其特殊意义,在赋值时要避免对其赋值操作

1.3.3变量的管理

        (1)内存变量的删除与修改

        在工作区窗口,选择变量右击即可修改

        who 与 whos 命令

        (2) 内存变量文件

        用于保存matlab工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件。

        save命令:创建内存变量文件;

        load命令: 装入内存变量文件。


1.4 matlab矩阵的表示

1.4.1 矩阵的建立

        (1)利用直接输入法建立矩阵:将矩阵的元素用中括号括起来,按矩阵行的顺序输入各种元素,同一行的元素用逗号或者空格隔开,不同行的元素用分号隔开。

        (2)利用已经建好的矩阵建立更大的矩阵:一个大矩阵可以由已经建立好的小矩阵拼接而成。

        (3)可以用实部矩阵和虚部矩阵构成复数矩阵。

1.4.2冒号表达式

        (1)格式:e1 :e2 :e3

        e1是初始值,e2是步长,e3是终止值

        若省略e2步长,则步长默认值为1

        (2)linspace函数

        linspace(a,b,c)其中a为第一个元素,b为最后元素,c为元素总和

当c省略时会自动产生100个元素。

1.4.3结构矩阵和单元矩阵

 (1)结构矩阵

        由结构数据组成的矩阵就是结构矩阵,结构矩阵里的每一个元素就是结构数据类型。

        格式为:结构矩阵元素.成员名=表达式

 (2)单元矩阵

        建立单元矩阵和一般矩阵类似,直接输入就可以,只是单元矩阵元素用大括号括起来。

 


1.5  矩阵元素的引用

1.5.1  矩阵元素的引用方式

        (1)通过下标来引用矩阵元素

        A(2,3)表示第三行第二列的元素

        注意:如果给出的行下标或者列下标大于原来矩阵的行数和列数,那么matlab将自动扩展原来的矩阵,并且将扩展后没有赋值的元素置为0。

        (2)通过序号来引用

  •  在matlab中,矩阵元素按照列存储,即首先存储矩阵的第一列元素,然后存储第二列元素,一直到最后一列元素。
  • 矩阵元素的序号就是矩阵元素在内存的排列顺序。

        矩阵与下标是一一对应的,以m×n矩阵A为例,矩阵元素A(i,j)的序号就是(j-1)×m+i

        例如:A(1,2)=2,所以其序号为(2-1)×2+1=3,因此A(3)=2

        注意:矩阵元素的序号和下标可以通过sub2ind和ind2sub函数进行转换

  •         sub2ind函数:将元素中指定元素的行列下标转换成存储的序号。

        调用格式为:D=sub2ind(S,I,J)

        其中:D为序号;S为行数和列数组成的向量,可用size(A)获得;I为转换矩阵的行下标;J为转换矩阵的列下标;如果I和J是矩阵,则表示要将矩阵中的多个元素的行列下标转换成存储的序号。

        sub2ind函数举例:

        

  •         ind2sub函数:将把函数元素的序号转换成对应的下标,其调用格式为:

                [ I , J ] = ind2sub( S , D )

                其中I为行下标,J为列下标,S为行数和列数组成的向量,D为序号

        注意: sub2ind函数和ind2sub函数是一对互逆函数,sub2ind函数将下标转换成索引,ind2sub函数将索引转换成下标。

        ind2sub函数举例:

1.5.2  利用冒号表达式获得子矩阵

        子矩阵是指由矩阵中的一部分元素构成的矩阵。

        A(i,:)  ——》 第i行的所有元素

        A(:,j) ——》 第j列的所有元素

        A(i:i+m , k : k+m) ——》第i行到第i+m行且在第k列到第k+m列的所有元素

        A(i:i+m,:) ——》第i到i+m行所有元素

        end运算符:表示某一维的末尾元素下标

1.5.3  利用空矩阵删除矩阵元素

        空矩阵是没有任何元素的矩阵

        X就是一个空矩阵

1.5.4  改变矩阵形状

        reshape(A,m,n) :在矩阵元素保持不变的情况下,将矩阵A重新排列成m×n的二维矩阵

        注意:reshape函数只改变原矩阵的行数和列数,但不改变原矩阵的元素个数及其存储顺序。

        A(:)  : 将矩阵A的每一列元素全部堆贴起来,转换成一束列向量

        A(:)等价于reshape(A,9,1)


1.6 MATLAB基本运算

1.6.1算数运算

        (1)基本算数运算

        基本算数运算符:+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)。

  • MATLAB算数运算是在矩阵意义下进行的。
  • 单个数据的算数运算只是矩阵运算的一种特例。

        注意:MATALB的运算是在矩阵意义下进行的,单个数据的算数运算只是矩阵运算的一种特例。

        加减运算

  • 若两矩阵同型,则运算时两矩阵的相应元素相加减
  • 若两矩阵不同型,则MATLAB会报错
  • 一个标量也可以和矩阵进行加减运算,这时把标量和矩阵的每一个元素进行加减

        乘法运算

  • 矩阵A和B进行乘法运算,要求A的列数和B的行数相等,此时则A和B可乘的,或称两个矩阵维数和大小相容
  • 如果两个矩阵的维数和大小不相容,则给出错误信息,提示两个矩阵不可乘

        除法运算

        在MATLAB中,有两种矩阵除法运算:右除/和左除\。

        如果矩阵A是非奇异矩阵,则B/A等效于B*inv(A),A\B等效于inv(A)*B,inv()函数为MATLAB求逆函数。

        对于矩阵来说,右除和左除代表两种不同的除数矩阵和被除数矩阵关系。

        / 右除:a/b表示矩阵a乘以b的逆:

        \ 左除 : a\b 表示矩阵a的逆乘以b

        对于含有标量的运算,左除和右除的效果一样

        乘方运算

        一个矩阵的乘法运算可以表示成A^x,要求A为方阵,x为标量

        (2) 点运算

  • 点运算符号: .*        ./        .\        和        .^
  • 两矩阵进行点运算是指它们对应的元素进行相关运算,要求两矩阵同型。

        例子:

1.6.2关系运算

  • 关系运算符:<(小于) 、<=(小于等于) 、>(大于) 、>=(大于等于) 、 ==(等于) 、~=(不等于)。

        注意: = 是赋值,而==表示是否等于的意思

  • 当两个比较量是标量时,直接比较两个数大小。若关系成立,关系表达式结果为1,否则为0。
  • 当参与比较的量是两个同型的矩阵时,比较的是对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,他的元素有0或1构成

  • 当参与比较的一个是标量,而另外一个是矩阵时,则把标量与矩阵的每一个元素按照标量关系运算规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,他的元素是由0或1构成。

        例子:判断矩阵A的元素是否为偶数

1.6.3逻辑运算

        逻辑运算符:&(与)、|(或)和~(非)。

        设参与逻辑运算的是两个标量a和b,那么运算规则为:

  • a&b        a、b全为非零时,结果运算为1.否则为0
  • a | b        a、b中只要一个为非零时,结果运算为1
  • ~ a          当a为0时,运算结果为1;当a为非零时,运算结果为0。

        注意: 在算数运算、关系运算 和 逻辑运算中,算数运算的优先级最高,逻辑运算优先级最低。但逻辑运算是单目运算,它的优先级比双目运算要高。(单目运算是指运算所需变量为一个的运算符,双目运算符就是对两个变量进行操作)

  • 若参与逻辑运算的是两个同型矩阵,那么将对矩阵相同位置上的元素按照标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。
  • 若参与逻辑运算的一个是标量,一个是矩阵,那么将在标量与矩阵中的每个元素之间按标量规则逐个进行运算,最终运算结果是一个与矩阵同型的矩阵,其元素由1或0组成。

        例子:求水仙花数(各位数字的立方之和等于该数本身的三位正整数)


1.7 字符串处理

1.7.1 字符串的表示

        (1)在MATLAB中,字符串是用单引号括起来的字符序列

        (2)若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示

        (3)建立多行字符串,形成字符串矩阵。因为是矩阵,要求各行字符数要相等,也就是列数相同,当各行字符数不相等时,就要用空格调节各行的长度,使他们的列数彼此相同。

        (4)例子:建立一个字符串向量,然后对该向量做如下处理:

  • 取1~5个字符组成的子字符串
  • 将字符串倒过来重新排列
  • 将字符串中的小写字母变成相应的大写字母,其余字符不变
  • 统计字符串中小写字母的个数

1.7.2 字符串的操作

        (1)字符串的执行

                格式: eval(s)   

                其中,s是字符串

        (2)字符串与数值之间的转换

  • abs 和double 函数都可以用来获取字符串矩阵所对应的ASCII数值矩阵
  • char 函数可以把ASCII码矩阵转换为字符串矩阵

        (3)字符串的比较

        字符串比较有两种方法:利用关系运算符或字符串比较函数。

  • 关系运算符比较:两个字符串里的每个字符依次按ASCII值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1,要么是0。

  • 字符串比较函数用于判断字符串是否相等,有四种比较方式,函数如下:
    • strcmp(s1,s2):用于比较s1和s2是否相等,如果相等,返回结果为1,否则返回为0.
    • strncmp(s1,s2,n):用来比较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0.
    • strcmpi(s1,s2):在忽略字母大小前提下,比较字符串s1和s2是否相等,如果相等,返回1,否则返回0.
    • strncmpi(s1,s2,n):在忽略字母大小前提下,比较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0.

        (4)字符串的查找与替换

  • findstr(s1,s2):返回短字符串在长字符串中的开始位置。
  • strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3。


专题一总结

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值